DrawImage ins Fenster

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
stab
Beiträge: 96
Registriert: 24.02.2006 16:09
Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Wohnort: Hardt
Kontaktdaten:

DrawImage ins Fenster

Beitrag von stab »

Hallo,

wie bekomme ich am schnellsten und einfachsten die gezeichneten Images wieder weg?

( außer Fenster schließen oder PC ausschalten) :-)

Code: Alles auswählen

Procedure jaPBe_CatchPackedImage(ImageNumber.l, *Label) ; Catch packed image [JCalG1] Ex : jaPBe_CatchPackedImage(#Image0, ?Image_Start)
  Protected *Buffer, BufferLen.l, ReturnValue.l
  BufferLen = PeekL(*Label + 2)
  If BufferLen
    *Buffer = AllocateMemory(BufferLen)
    If *Buffer
      If UnpackMemory(*Label, *Buffer)
        ReturnValue = CatchImage(ImageNumber, *Buffer)
      EndIf
      FreeMemory(*Buffer)
    EndIf
  EndIf
  ProcedureReturn ReturnValue
EndProcedure
;  IncludeBinary "gruenesHaekchen.ico" <JCalG1 Packed> [?gruenesHaekchen_ico_Start , ?gruenesHaekchen_ico_End]
;{ Original Size = 1406 bytes ; Packed Size = 338 bytes
DataSection
gruenesHaekchen_ico_Start:
Data.l $057E434A,$846A0000,$23011539,$81202091,$11B40098,$8B002284,$42044150,$8C806119,$0C034134,$57008B0C,$9599AFFB,$56A446C4
Data.l $5B922B42,$734AADA9,$D52BB825,$84AFE895,$D080BA57,$81DC495E,$855EDC50,$6198CB91,$61D02104,$63442268,$79598EDF,$625E6559
Data.l $A3A11976,$E9AA467B,$19E491A7,$742D846A,$74B62A59,$92EB5AB1,$11BE6B05,$91C0B0B9,$4737ED09,$11D31D26,$A021AECC,$474F71B4
Data.l $4759D126,$11D9CA26,$91DAD7D9,$91DFF049,$8478F389,$5113F8B8,$991EBE4E,$AA479E8E,$EF91B75F,$0083B5F0,$2647EEF5,$2647E7F2
Data.l $FC11F7F5,$2602F9EB,$8F25FF99,$FC911F74,$D6EDFD4B,$B07A224D,$7779EFFE,$E4ECDF6E,$68F73423,$399D753D,$EF37DFAA,$E8E7C610
Data.l $6F3F4BCB,$3F1DFB51,$ED8437A2,$DDF6BEB7,$CFA113DD,$373D00A7,$8308E367,$E6FD5CBF,$072BB9E2,$77FB53CF,$F3C3F89E,$A79E3FA4
Data.l $C53CDAFC,$FE8D9E67,$A01AF974,$47C6D8A8,$2E0A7CC0,$B0979785,$897F5C04,$7FE3F431,$D2E3A7E8,$4BE2E963,$00F0A5E3,$000097E1
Data.b $44,$22
gruenesHaekchen_ico_End:
EndDataSection ;}

;  IncludeBinary "rotesKreuzchen.ico" <JCalG1 Packed> [?rotesKreuzchen_ico_Start , ?rotesKreuzchen_ico_End]
;{ Original Size = 1406 bytes ; Packed Size = 454 bytes
DataSection
rotesKreuzchen_ico_Start:
Data.l $057E434A,$FE500000,$23013451,$81202091,$11B40098,$8B002284,$42044150,$8C806119,$0C024134,$7B408B0C,$97E1FFEE,$5FE447EE
Data.l $60502FEA,$103FBFE4,$296F1FAA,$4C233118,$25130918,$8BC5B846,$6351F391,$91487C04,$21269050,$92483C40,$4C49FD91,$6524FE44
Data.l $6793FF84,$1A34BBE4,$468E6F21,$2B94E35C,$1AED5820,$44A5EDC1,$46C67B8C,$46DB436E,$91B74B80,$002159CE,$11B955F2,$846F72ED
Data.l $791CDC79,$6430B7CE,$A0C71E1C,$A473D920,$90CEE237,$00A61950,$34DA6881,$6C3A9C1C,$2481B40C,$4804C475,$8F49035A,$EC7C367B
Data.l $FA111DB6,$CD000C12,$1437DD6B,$84778700,$0388863D,$479FC641,$91E84BE2,$047BDADA,$10F173BB,$047C249B,$943D787D,$7112DEF6
Data.l $47F35F1F,$00878008,$9356FCFB,$F820F7C8,$779B1FAF,$F2017F09,$5F546825,$7DD21FA2,$FA4BBEC9,$F12FFC25,$943CF697,$9DFFEA44
Data.l $FBBC57BD,$AA5E7811,$FB851E3F,$F1D74DCE,$25CCDD43,$F5F6DD19,$49DB5132,$0AEE3860,$2F2FFBF5,$FA1BF95E,$D050C02A,$5909C3DC
Data.l $B038ECFE,$653E3EDC,$E71125DA,$6FC2F481,$8B7F1EF9,$B8DD07A6,$E97D3A27,$0737E044,$1D6293BD,$4FCDAA38,$79CEDBCE,$04FA840E
Data.l $C1F54362,$8D78A111,$FDDC2373,$FDA04067,$50DEE2F1,$3F5F87E7,$B8A06015,$971F1229,$0E021A00,$2F848686,$FA1F8601,$041E3D29
Data.l $F0C18BFB,$06870041,$9060C046,$44A18F06,$4000F9C0
Data.b $24,$22
rotesKreuzchen_ico_End:
EndDataSection ;}

jaPBe_CatchPackedImage(0, ?gruenesHaekchen_ico_Start)
jaPBe_CatchPackedImage(1, ?rotesKreuzchen_ico_Start)

If OpenWindow(0, 100, 100, 500, 300, "PureBasic - Image")
  
 
  Repeat
    EventID = WaitWindowEvent()
    
    If EventID = #PB_Event_Repaint
      StartDrawing(WindowOutput(0))
        DrawImage(ImageID(0), 20, 10)
        DrawImage(ImageID(1), 20, 30)
      StopDrawing()

      EndIf
    
  Until EventID = #PB_Event_CloseWindow  
  
EndIf

End   

Danke
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."

Wer lügt hier wirklich und wer sagt die Wahrheit?

_________________________________________

286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Mit PB eigentlich gar nicht. Du kannst aber ein neu zeichnen erzwingen
in dem du das Fenster z.b. mit ResizeWindow kurz verkleinerst oder was
auch immer. Mit WindowsApi reicht ein InvalidateRect_(windowid(0),0,1).
Benutzeravatar
stab
Beiträge: 96
Registriert: 24.02.2006 16:09
Computerausstattung: 286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Wohnort: Hardt
Kontaktdaten:

Beitrag von stab »

Aja, Danke!!!

InvalidateRect_() ist mir da mit den Koordinaten wieder zu kompliziert.
Da werde ich wohl Gadgets verwenden.
Paul sagt: "Max lügt."
Max sagt: "Otto lügt."
Otto sagt: "Max und Paul lügen."

Wer lügt hier wirklich und wer sagt die Wahrheit?

_________________________________________

286er Big Tower; 16MHz; 1MB Ram; 40MB Festplatte, 5 1/4" und 3 1/2" Diskettenlaufwerk; VGA Farbmonitor 14"; Windows 3.1; PureBasic 0.5
Benutzeravatar
HeX0R
Beiträge: 3042
Registriert: 10.09.2004 09:59
Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3
Kontaktdaten:

Beitrag von HeX0R »

Code: Alles auswählen

BufferLen = PeekL(*Label + 2) 
Ja wie? Im gepackten Paket steht tatsächlich die benötigte Speichermenge zum entpacken mit drin?
Wieso sagt mir das keiner?
Antworten