Entwickler-Ecke
Sonstiges (Delphi) - Form1 für anderes Programm durchsichtig machen
Xadron - Di 17.07.07 08:21
Titel: Form1 für anderes Programm durchsichtig machen
Ich habe Bilder in einen Ordner gelegt und die Bilder in einer Diashow ablaufen lassen.
Nun habe ich ein Programm gemacht, was wenn ein Pixel weiß ist, eine Message zeigen soll :(bild weiß).
Dafür habe ich die Form1 transparent gemacht, so dass nur der Blaue Rand zu sehen ist.
Darauf folgend aktiviere ich die Diashow und drücke mit alt+tab zu meinem selbst gemachten Programm durch.
Nun ist mein Programm im Vordergrund und die Diashow dahinter.
Da es transparent ist, müsste doch eigentlich die Funktion canvas.pixel funktionieren, da ja durch die transparente form1 die Diashow zu sehen ist.
Dies geht leider nicht. Was kann man in diesem Fall tuhen?
andras - Di 17.07.07 11:16
nur weil es transparent ist, heißt es ja nicht dass es futsch ist....
mein tipp: screenshot machen lassen (einfach danach suchen hier im forum) und dann den screenshop bearbeiten....
achja, dein programm sollte minimiert sein, das geht mit
sicher nicht die eleganteste lösung.....
Xadron - Mi 18.07.07 20:52
Funktioniert perfekt, nur leider muss ich nach 10min das prog neu starten.
Im diesem Forum haben viele geschrieben das der pc einfach überlastet wird.
Gibt es einen trick, wie man den speicher ihne große Probleme löschen kann?
elundril - Do 19.07.07 04:06
gibst du auch brav deine Bilder wieder frei??
ansonsten würd ich
Hux einfach mal fragen wie er das bei seinem Programm gelöst hat das ebenso die farben vom bildschirm auffängt.
el elundril
Xadron - Fr 20.07.07 15:40
Die Bilder gebe ich immer frei.
Habe ihn schon geschrieben aber er antwortet nicht.
Hier im Forum oder woanders habe ich keine Fehlerlösung gefunden.
Ich könnte das Programm natürlich auch nach 5 min beenden lassen und automatisch sich selbst wieder starten,
wäre aber keine dauerhafte Lösung.
elundril - Sa 21.07.07 04:06
hast du nicht vielleicht lust etwas mehr quelltext zu zeigen?
lg elundril
ps: schon mal auf seiner HP als E-Mail versucht unter kontakt?
pigfacejoe - Sa 21.07.07 09:13
Hi Xadron!
Zitat: |
Gibt es einen trick, wie man den speicher ihne große Probleme löschen kann?
|
Du könntest beispielsweise die Farbtiefe vom Screenshot runterdrehen :
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28:
| procedure ScreenCapture(Bmp: TBitmap); var DeskWnd: HWnd; DeskDC: HDC; DeskCv: TCanvas; R: TRect; W, H: Integer; begin if Bmp = nil then Exit; DeskWnd := GetDesktopWindow; DeskDC := GetWindowDC(DeskWnd); DeskCv := TCanvas.Create; DeskCv.Handle := DeskDC; W := Screen.Width; H := Screen.Height; R := Bounds(0, 0, W, H); try Bmp.HandleType := bmDIB; Bmp.PixelFormat := pf8Bit; Bmp.Width := W; Bmp.Height := H; Bmp.Canvas.CopyMode := cmSrcCopy; Bmp.Canvas.CopyRect(R, DeskCv, R); finally DeskCv.Free; ReleaseDC(DeskWnd, DeskDC); end; end; |
Schönen Gruss!
Pigface Joe
BenBE - Sa 21.07.07 18:10
Alternativ (was wahrscheinlich mehr bringt), ist das Wiederverwenden deines Temporär-Bitmaps ...
D.h. nicht bei jedem Screenshot das tmp. Bitmap neu anlegen, sondern einmal Erzeugen und erst beim Beenden des Programms wieder freigeben.
Der Standard-Speichermanager der VCL hat in Hinblick auf die Wiederverwendung von freigegebenem Speicher so seine Macken ...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!