BitBlt unter PB

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

BitBlt unter PB

Beitrag von blbltheworm »

Hallo zusammen,
ich hab mit VB relativ viel mit BitBlt gearbeitet und wollte das nun auch unter PB machen.
Jedoch scheine ich nicht zu kapieren wie das unter PB gehandhabt wird.
Was ist der DC eines Images und was ist der DC eines ImageGadgets, oder überhaupt eines Gadgets.

Kann mir bitte irgendjemand ein simples Beispiel zukommen lassen in dem gezeigt wird wie man.

1. mit BitBlt von einem Image in ein anderes kopiert
2. von einem Image in ein ImageGadget
3. von einem ImageGadget auf ein Window

Bitte hier ein kleines Codebeispiel posten, denn wie gesagt, ich komme nicht dahinter.
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

In PB gibts dafür vorgefertigtes Zeugs, etwa StartDrawing(), DrawImage() usw. (Damit kann man auch Images in anderen Images zeichnen oder Images auf Fenster usw.)

Ansonsten geht das mit den DCs genauso wie es die WInAPI vorhergesehen hat. Mit GetDC oder CreateCompatibleDC oder vergleichbaren Funktionen kann man den DC eines Fensters oder eines Images ermitteln und dann mit bitblt darauf zeichnen lassen.
Also Bitblt ist ja nun keine Erfindung von VB sondern vom Betriebssystem, daher dürfte es eigentlich überall gleich funktionieren.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Dass es PB eigene Funktionen gibt weiß ich, aber mein großes Ziel ist es von PB aus in eine andere Anwendung hinein zu zeichnen und da komme ich mit den PB eigenen Funktionen dann nicht mehr weit.
Könntest du mir ein kleines Beispiel zeigen, wie ich mit BitBlt in PB arbeite??
Also nicht anwendungsübergreifend.
In VB ist das ganze äußerst einfach, da man auf den DC als Wert eines jeden Steuerelementes zugreifen kann. Aber wie das ganze unter PB funktioniert entzieht sich leider meinen Kenntnissen.
Nouba
Beiträge: 1
Registriert: 19.08.2005 16:47
Wohnort: Berlin

Beitrag von Nouba »

Wenn hWnd des Fensters bekannt ist, sollte mit GetDC_(hWnd) der Display Device Context ermittelbar sein. Der Rest sollte im Prinzip dann genauso einfach wie in VB funktionieren.[/i]
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

OK und wie komm ich an die Werte mit PB??
Und woher weiß GetDC von welchem Objekt ich den DC will??
Benutzeravatar
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Und woher weiß GetDC von welchem Objekt ich den DC will??
Schau mal die Funktion an, die hat einen Parameter. Da schreibst du das Handle des Fensters rein. Dann bekommst du den Device Context dieses Fensters.
Wie hast du das bitte vorher in VB gemacht wenn du keine WinAPI verwendet hast?
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

Sorry, ich weiß nie wann man von Fenstern und wann von Fenstern redet.
Du meinst jetzt mit Fenster ein x-beliebiges Steuerelement, egal ob Button, Textbox, Window...
Oder hab ich dich da falsch verstanden??

Und woher bekomme ich den hWnd eines solchen Fensters??
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

Beitrag von ts-soft »

Code: Alles auswählen

DC1 = GetDC_(WindowID(#MeinWindow))
DC2 = GetDC_(GadgetID(#MeinGadget))
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
Ynnus
Beiträge: 855
Registriert: 29.08.2004 01:37
Kontaktdaten:

Beitrag von Ynnus »

Es ist total wurscht ob man von Steuerelementen wie buttons oder von Windows = Fenster redet, da beides das gleiche ist in der WinAPI. Daher kannst du GetDC auf beide Elemente anwenden und somit auf Fenster oder auf Buttons zeichnen, wie es dir beliebt.
Benutzeravatar
blbltheworm
Beiträge: 217
Registriert: 22.09.2004 19:36
Wohnort: Auf der schönen Schwäbischen Alb

Beitrag von blbltheworm »

OK, mein Problem ist beseitigt und ich wieder ein klein wenig schlauer.
Vielen Dank an die die (schnelle) Hilfe.
Antworten