Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von Bisonte »

Kriegt man aus den ID's wieder die dazugehörigen PB_Nummern ?

Also aus der ImageID(Image) wieder das Image ?

Geht mir im allgemeinen um DLL - Programmierung :
wie z.B. kann ich auf ein Bild Zeichnen das das Hauptprogramm erstellt hat.
Wenn ich der DLL die Imagenummer übergebe klappt nix, also denke ich muss ich die ImageID()
"rüberbringen".

StartDrawing erwartet ja nun beim ImageOutput usw eine PB Nummer... keine ID.

Wie krieg ich das also hin, auf ein Image zu zeichnen von dem ich nur die ImageID habe.... ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von ts-soft »

Neues Bild erstellen, das alte draufzeichnen (mit der ImageID) und schon kannste drin rumwurschteln.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von STARGÅTE »

Kriegt man aus den ID's wieder die dazugehörigen PB_Nummern?
Nein,
wenn das Image von PB wäre, könntest du ja deren Nummer selbst ermitteln,
und wenn es nicht von PB ist, hat es keine Nummer.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von Bisonte »

@stargate: Das Bild wird ja mit PB gezeichnet, vom Hauptprogramm.

@ts: Ist das nicht ein Problem, weil ich das Originalbild ja nicht wieder loswerde ? (Memoryleak?)
und dann hätt ich ja wiederum das gleiche Problem andersherum, dass ich im Hauptprogramm dann wieder
ein Image habe ohne PB Nummer... und so stapelt sich das ganze... oder nicht ?

Edit: FreeImage() erwartet ja auch wieder eine PB Nummer....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von STARGÅTE »

stargate: Das Bild wird ja mit PB gezeichnet, vom Hauptprogramm.
Na dann kannst du doch deren Nummer nutzen.

Verstehe irgendwie nicht warum du in der DLL mit der ID arbeitest.
Du übergibst der DLL ganz normal die ImageID, und zeichnest es in das in der DLL erstellte Image.

Das Hauptprogramm kann dein Image selber loswerden und die DLL auch.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von edel »

Bisonte hat geschrieben:Wenn ich der DLL die Imagenummer übergebe klappt nix, also denke ich muss ich die ImageID()
"rüberbringen"

Das liegt daran das die DLL ihre eigene interne Liste hat, also dort auch nichts findet. Probier es mal mit #pb_any.
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von Bisonte »

@Stargate: Nochmal zum Verständnis: Das Hauptprogramm hat ein Image mit CreateImage(0,110,25) erstellt und in
einer Prozedur innerhalb der DLL soll es bearbeitet werden, damit ich es im Hauptprogramm weiter verwenden kann.
Mit der Übergabe an die DLL-Procedure von der PB_Nummer hat es nicht geklappt.
Nur mit der ImageID ...

@edel:

Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle :o
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Und wieso gab es immer IMA (wegen weil Image not Initialized) bei CreateImage(0,....) ?

Fragen über Fragen .... ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von STARGÅTE »

Und wenn du die OutputID übergibst, dass müsste eigentlich funktionieren.

also ImageOutput(#Image) an die DLL übergeben und dort dann einfach in StartDrawing benutzen, wenn es wirklich nur ums "benutzen" geht.
Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Und wieso gab es immer IMA (wegen weil Image not Initialized) bei CreateImage(0,....) ?

Fragen über Fragen ....
Vielleicht wäre es an der Zeit doch mal ein Code dazu zu posten ... damit wir dein Problem besser nachvollziehen können.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
Thorium
Beiträge: 1722
Registriert: 12.06.2005 11:15
Wohnort: Germany
Kontaktdaten:

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von Thorium »

Bisonte hat geschrieben: Seltsamerweise funktioniert es wenn ich mit CreateImage(#PB_Any...) erstelle :o
So klappts. Aber ist das jetzt nur zufall, oder ist das normal ?
Das ist normal und auch nicht seltsam, deswegen hat edel es ja vorgeschlagen.
PureBasic führt intern eine List der Nummern, DLL und EXE haben dabei getrennte listen. Die ID, welche mit PB_Any zurückgegeben wird gehöhrt nicht zur Liste, das ist einfach ein Memory Pointer und kann von daher von der DLL verwendet werden um auf die Image Struktur zuzugreifen.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.

Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke! Bild
Benutzeravatar
Bisonte
Beiträge: 2468
Registriert: 01.04.2007 20:18

Re: Die ID's und PB Nummern : StartDrawing() Ohne PBNummer ?

Beitrag von Bisonte »

danke für die ausführliche Erklärung...

Ich denke das gleiche gilt für andere PB Nummern wie z.B Sounds, Windows usw die ebenfalls per #PB_ANY erstellt worden sind.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Antworten