Das gezeichnete Bild wird beim CanvasGadget erst nach dem StopDrawing() sichtbar.
Beim Malen zuschauen geht nur, wenn du für jeder Linie extra jedesmal wieder StartDrawing() und StopDrawing() aufrufst.
Grafik wird "wegradiert"
- NicTheQuick
- Ein Admin
- Beiträge: 8808
- Registriert: 29.08.2004 20:20
- Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti - Wohnort: Saarbrücken
Re: Grafik wird "wegradiert"
Wenn du alle Linien in einem StartDrawing-StopDrawing-Block zeichnest, dann werden sie beim Aufruf von StopDrawing() alle mit einem Mal gezeichnet. Nach deiner Beschreibung zu urteilen, machst du das nicht so. Und das ist dann natürlich arschlangsam.
Mist, mir ist gar nicht aufgefallen, dass es hier schon eine zweite Seite gibt.
Mist, mir ist gar nicht aufgefallen, dass es hier schon eine zweite Seite gibt.

Re: Grafik wird "wegradiert"
HI,
Stimmt - ich hatte schlicht das Image- gegen das CanvasGadget getauscht. Inzwischen hab ich startdrawing() und stopdrawing() aus der sub_zeichnen entfernt und um die die sub aufrufende Schleife gelegt. Da geht's inzwischen auch so schnell mit dem canvasgadget. Zumindest... erkenne ich das optisch nicht mehr wirklich als Unterschied. Die Zeit hab ich aber nicht gemessen.
So langsam verstehe ich wohl immer mehr, wie die 2D-Dinge zusammenhängen (könnten).
Beim Malen zuschauen geht nur, wenn du für jeder Linie extra jedesmal wieder StartDrawing() und StopDrawing() aufrufst
Nach deiner Beschreibung zu urteilen, machst du das nicht so.

Stimmt - ich hatte schlicht das Image- gegen das CanvasGadget getauscht. Inzwischen hab ich startdrawing() und stopdrawing() aus der sub_zeichnen entfernt und um die die sub aufrufende Schleife gelegt. Da geht's inzwischen auch so schnell mit dem canvasgadget. Zumindest... erkenne ich das optisch nicht mehr wirklich als Unterschied. Die Zeit hab ich aber nicht gemessen.
So langsam verstehe ich wohl immer mehr, wie die 2D-Dinge zusammenhängen (könnten).

- 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: Grafik wird "wegradiert"
Bei Deiner Version mit dem ImageGadget ging es genauso langsam, bloß er wurde erst mit
angezeigt und nicht bei StopDrawing()
Sind also alle Versionen beim Zeichnen gleich schnell, lediglich die Anzeige erfolgt woanders.
Und das man mit StartDrawing() und StopDrawing() sparen sollte, haste nebenbei auch noch gelernt
Gruß
Thomas
Code: Alles auswählen
SetGadgetState(image_ankf_hd,ImageID(img_ankf))
Sind also alle Versionen beim Zeichnen gleich schnell, lediglich die Anzeige erfolgt woanders.
Und das man mit StartDrawing() und StopDrawing() sparen sollte, haste nebenbei auch noch gelernt

Gruß
Thomas
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Grafik wird "wegradiert"
HI,
Ich habe die sub routine (beinhaltend startdrawing() und stoppdrawing()) einmal mit dem imagegadget und einmal mit dem canvasGadget probiert. Die Gesamtzeit des Zeichenauftrags war bei der version "canvasgadget" deutlich länger.
Ich vermute (mit meinem gefährlichen Halbwissen ...
), dass das canvasgadget nach jedem Zeichenschritt selbst das gezeichnete Bild in den Anzeigebereich kopiert. Beim imagegadget wird dies nicht eigenständig gemacht (es muß durch den Programmierer per setgadgetstate() gemacht werden). Und das spart dem imagegadget eben viel Zeit.
ähnö. Vielleicht hab ich's unklar beschrieben.Sind also alle Versionen beim Zeichnen gleich schnell,
Ich habe die sub routine (beinhaltend startdrawing() und stoppdrawing()) einmal mit dem imagegadget und einmal mit dem canvasGadget probiert. Die Gesamtzeit des Zeichenauftrags war bei der version "canvasgadget" deutlich länger.
Ich vermute (mit meinem gefährlichen Halbwissen ...

- 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: Grafik wird "wegradiert"
Wenn Du das Start/Stop Drawing nur am Anfang und Ende der gesamten Zeichenoperation ausführst, werden beide gleichschnell sein.
Du hast es ja nur verkehrt gemacht. Es stimmt schon, das beide gleich schnell sind, es ist ja schließlich derselbe Code. Du läßt in Dir bloß, aufgrund der Eigenschaften der Gadgets, unterschiedlich oft Anzeigen, bzw. das CanvasGadget macht dies automatisch.
Ein Start/Stop Drawing und dann anzeigen (bei Canvas autom.) und beide sind gleichschnell. Aufgrund des Doppelbuffering beim Canvas kann es natürlich eine minimale Zeit länger dauern, was aber kaum meßbar ist.
Gruß
Thomas
Du hast es ja nur verkehrt gemacht. Es stimmt schon, das beide gleich schnell sind, es ist ja schließlich derselbe Code. Du läßt in Dir bloß, aufgrund der Eigenschaften der Gadgets, unterschiedlich oft Anzeigen, bzw. das CanvasGadget macht dies automatisch.
Ein Start/Stop Drawing und dann anzeigen (bei Canvas autom.) und beide sind gleichschnell. Aufgrund des Doppelbuffering beim Canvas kann es natürlich eine minimale Zeit länger dauern, was aber kaum meßbar ist.
Gruß
Thomas
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.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
