Zeichnen in Window

Anfängerfragen zum Programmieren mit PureBasic.
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Zeichnen in Window

Beitrag von MacThommes »

Hi.
Bin neu hier und hab direkt eine Frage:
Ich versuche auf einen Fenster was ich mit If OpenWindow..... geöffnet habe eine Linie zu zeichnen.
Gadgets etc werden angezeigt sonst funktioniert soweit auch alles prima, aber eine Linie bekomme ich nicht auf das aktuelle Fenster gezeichnet.

Code: Alles auswählen

#FENSTER_HAUPT = 1
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered
If OpenWindow(#FENSTER_HAUPT, 0, 0, 200, 240, "Fenster Zeichnung", #FLAGS)
If StartDrawing(WindowOutput(#FENSTER_HAUPT))
Box(15, 15, 75, 75, RGB(255, 0, 0))
Circle(140, 125, 45, RGB(35, 158, 70))
;die nächsten 2D Zeichenbefehle zeichnen ein Dreieck
LineXY(62, 140, 112, 220, RGB(0, 0, 255))
LineXY(112, 220, 12, 220, RGB(0, 0, 255))
LineXY(12, 220, 62, 140, RGB(0, 0, 255))
FillArea(62, 180, RGB(0, 0, 255), RGB(0, 0, 255))
StopDrawing()
EndIf
Repeat
Ereignis.i = WaitWindowEvent()
Until Ereignis = #PB_Event_CloseWindow
EndIf
End
Bei diesem Progrämmchen z.B. erscheint lediglich ein schwarzes Fenster.
Sehr seltsam: Unter Windows kann man das Ergebnis sehen, unter MacOS 26.0.1 nicht.
Kann es sein, das da der Fehler ist?
Axolotl
Beiträge: 303
Registriert: 31.12.2008 16:34

Re: Zeichnen in Window

Beitrag von Axolotl »

Auch unter Windows solltest Du das direkte Zeichnen auf dem Bildschirm nach einem Paint-Event durchführen.
Sonst bleibt das Fenster irgendwann leer.

Generell ist es besser ein Gadget zu verwenden, da die Rekonstruktion dann vom Gadget übernommen wird.
Geeignet wären hier ImageGadget oder CanvasGadget, abhängig davon wohin die Reise gehen soll.

Hier mal die notwendigen Änderungen: (Einrückungen sind auf jeden Fall hilfreich für das Lesen.)

Code: Alles auswählen

#FENSTER_HAUPT = 1
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered

If OpenWindow(#FENSTER_HAUPT, 0, 0, 200, 240, "Fenster Zeichnung", #FLAGS)

  Repeat
    Ereignis.i = WaitWindowEvent() 
    If Ereignis = #PB_Event_Repaint 
      If StartDrawing(WindowOutput(#FENSTER_HAUPT))
        Box(15, 15, 75, 75, RGB(255, 0, 0))
        Circle(140, 125, 45, RGB(35, 158, 70))
        ;die nächsten 2D Zeichenbefehle zeichnen ein Dreieck
        LineXY(62, 140, 112, 220, RGB(0, 0, 255))
        LineXY(112, 220, 12, 220, RGB(0, 0, 255))
        LineXY(12, 220, 62, 140, RGB(0, 0, 255))
        FillArea(62, 180, RGB(0, 0, 255), RGB(0, 0, 255))
        StopDrawing()
      EndIf
    EndIf 
  Until Ereignis = #PB_Event_CloseWindow
EndIf
End

Using PureBasic latest stable version and current alpha/beta (x64) on Windows 11 Home
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Re: Zeichnen in Window

Beitrag von MacThommes »

Danke erst mal für die schnelle Antwort.
Ja, warum er die Einrückungen hier weggenommen hat, weiß ich nicht. Beim Original sind die natürlich da....
Ich habe oben geschrieben, das es unter Windows funktioniert.
Mein Problem ist, das es unter MacOS nicht funktioniert.
Dein Code ergibt auf dem Mac folgendes:
Ein leeres schwarzes Fenster....
jogo
Beiträge: 135
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Zeichnen in Window

Beitrag von jogo »

nur zur Info, bei mir (Linux) läuft das Beispiel von Axolotl so, wie es soll. Ich sehe 3 geometrische Figuren. Scheint also ein spezielles Mac-Problem zu sein. In der Hilfe sind allerdings keine Hinweise darauf zu finden..
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Benutzeravatar
Kiffi
Beiträge: 10718
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Zeichnen in Window

Beitrag von Kiffi »

MacThommes hat geschrieben: 11.11.2025 20:01Dein Code ergibt auf dem Mac folgendes:
Ein leeres schwarzes Fenster....
bei mir (Mac Mini M4 Tahoe) ist es ein leeres weißes Fenster.
a²+b²=mc²
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Re: Zeichnen in Window

Beitrag von MacThommes »

Ich denke es scheint ein Bug zu sein?
Zu Linux:
Ich habe es nicht geschafft PureBasic unter Linux zu installieren.
Vielleicht hat da ja jemand eine funktionierende (!) Anleitung, wie man das unter Linux Mint installiert bekommt.
Bin etwas geknickt, das es schon die ersten Probleme gibt.
Habe viele Jahre mit BlitzBasic auf dem Amiga und danach unter Windows.
Anfangs zu meiner Zeit mit dem ersten Mac (2003) konnte ich auch noch mit BlitzBasic programmieren.
Dann habe ich mich sehr gefreut, als ich von PureBasic gehört habe.
Kurz reingeschaut und begeistert die Vollversion bezahlt.
jogo
Beiträge: 135
Registriert: 22.11.2020 20:05
Computerausstattung: 'ne Handvoll gebrauchte Laptops & PCs mit Mint und LMDE

Re: Zeichnen in Window

Beitrag von jogo »

MacThommes hat geschrieben: 11.11.2025 22:25 Ich habe es nicht geschafft PureBasic unter Linux zu installieren.
In der Linux-Rubrik ist ganz oben eine Anleitung zur Installation. Bin aber nicht sicher, ob da vllt. schon Abweichungen gibt, weil von 2010.
Ansonsten stehen in der Datei INSTALL allle erforderlichen Schritte drin. Ich gehe dort die Punkte einfach durch.
Wo hakt es denn bei der Installation genau? Und welches Linux hast du?
Ist aber hier in diesem Thread etwas OT - vllt. machst du dafür einfach ein neues Thema auf ;)
--
Ideen gibt es viele - man muss sie nur haben...
Mint / LMDE5+6 // PureBasic 6.21
Benutzeravatar
TroaX
Beiträge: 699
Registriert: 08.03.2013 14:27
Computerausstattung: PC: Ryzen 9 3950X, 96 GB RAM, RX6800XT, 2.5 TB SSD, 21:9 Display, Linux Mint | Lappi: Ryzen 7 5800H, 16 GB RAM, 1 TB SSD, Linux Mint
Wohnort: NRW
Kontaktdaten:

Re: Zeichnen in Window

Beitrag von TroaX »

Eine Anleitung liegt dem Archiv für Linux bei. Optimiert ist diese für Ubuntu. Funktioniert aber zuminest meinder Beobachtung nach auf allen Debian-Distros. Ich nutze Mint.

Unter Linux funktioniert der Code von Axolotl. Bei deinem Code aus dem ersten Beitrag bekomme ich nur ein leeres Fenster.
PC: Ryzen 9 3950X | 96 GB RAM | RX6800XT | 2,5 TB NVMe | Linux Mint
Notebook: 16" 3:2 | Ryzen 7 5800H | 16 GB RAM | Radeon Vega | 1TB NVMe | Linux Mint
NAS: N150 Mini-PC | 16 GB RAM | Debian 13+CasaOS
Coding: Purebasic, Spiderbasic, GDevelop, PHP
Blog: https://techtroax.de
Repos: https://codeberg.org/TroaX
Benutzeravatar
Kiffi
Beiträge: 10718
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Zeichnen in Window

Beitrag von Kiffi »

um zurück zum Thema zu kommen: So sähe es mit einem ImageGadget aus:

Code: Alles auswählen

#FENSTER_HAUPT = 1
#FLAGS = #PB_Window_SystemMenu | #PB_Window_ScreenCentered

If OpenWindow(#FENSTER_HAUPT, 0, 0, 200, 240, "Fenster Zeichnung", #FLAGS)
  
  If CreateImage(0, 200, 240) And StartDrawing(ImageOutput(0))
    
    Box(15, 15, 75, 75, RGB(255, 0, 0))
    Circle(140, 125, 45, RGB(35, 158, 70))
    ;die nächsten 2D Zeichenbefehle zeichnen ein Dreieck
    LineXY(62, 140, 112, 220, RGB(0, 0, 255))
    LineXY(112, 220, 12, 220, RGB(0, 0, 255))
    LineXY(12, 220, 62, 140, RGB(0, 0, 255))
    FillArea(62, 180, RGB(0, 0, 255), RGB(0, 0, 255))
    StopDrawing()
    ImageGadget(0, 0, 0, 200, 240, ImageID(0))
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow
    
  EndIf
  
EndIf
a²+b²=mc²
MacThommes
Beiträge: 21
Registriert: 11.11.2025 15:38

Re: Zeichnen in Window

Beitrag von MacThommes »

Na, hier ist ja echt was los....
Sehr positiv!
Also, mit der Installation, werde ich am Nachmittag mal ein neues Thema aufmachen.
Die original Anleitung funktioniert nicht.
Nochmal zu dem ersten Problem:
Auch der Code von Axolotl ergibt bei mir ein leeres Fenster.
Antworten