Autor |
Beitrag |
DaKirsche
Beiträge: 187
Win XP Pro, SuSe Linux 7.3 - 10.2, Win 2k3 Server, Win 2000, Win NT 4.0
Delphi 2006 Pro, Java, HTML, SQL, PHP, CSS
|
Verfasst: Mi 25.02.09 19:10
Moin moin,
ich möchte in meinem Programm eine Infobox ausgeben.
Während diese angezeigt wird soll eine durchsichtig scheinende Grafik über die komplette Form gelegt werden und davor wieder Objekte, wie z.B. nen Panel oder so...
Hatte mir gedacht ich erstelle, wenn die Infobos eingeblendet werden sll, ein Screenshot des Fensters im aktuellen Zustand, wandel dieses in Graustufen um, passe die Größe an und stelle das Image in den Vordergrund.
Danach kommen halt die entsprechenden Objekte...
Aber ich habe das Problem, dass mit zwar angezeigt wird es hätte geklappt, aber es passiert nix....
Ein TImage mit Bezeichner tmpImg liegt auf der Form...
Hier mal die beteiligten Bestandteile des Codes:
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: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60:
| [...] procedure TForm1.GrauStufen(C:TCanvas); var x, y: integer; Color: LongInt; R, G, B, Gr: Byte; begin with C do begin for x:= ClipRect.Left to ClipRect.Right do for y:= ClipRect.Top to ClipRect.bottom do begin Color:=ColorToRGB(Pixels[x,Y]);
R := GetRValue(Color); G := GetGValue(Color); B := GetBValue(Color);
Gr:= Trunc(B*0.11+G*0.59+R*0.3); Pixels[x,Y] := RGB(Gr, Gr, Gr); end; end; end;
function TForm1.createInfobox():boolean; var tmpHDC: HDC; tmpBmp: TBitMap; begin result := FALSE; try tmpHDC:= CreateDC('DISPLAY',nil,nil,nil); tmpBmp:= TBitMap.Create(); tmpBmp.PixelFormat := pfDevice; with tmpImg do begin Left:= 0; Top:= 0; Width:= Form1.ClientWidth; Height:= Form1.ClientHeight; tmpImg.Canvas.Brush.Color:= clBlack; end; BitBlt(tmpBmp.Canvas.Handle,Form1.left, Form1.Top,Form1.Left+Form1.Width,Form1.Top+Form1.Height,tmpHDC,0,0,SRCCOPY); GrauStufen(tmpBmp.Canvas); tmpImg.Picture.BitMap := tmpBmp; tmpImg.Canvas.TextOut(0,400,'Infbox'); tmpBmp.Free; result:= true; except result:= FALSE; end; end; [...] procedure TForm1.DirChooseBtn1Click(Sender: TObject); begin if (createInfobox()) then DirStrInput1.Text := 'hat geklappt...eigentlich' else DirStrInput1.Text := 'Die spinnen die Römer :P'; end; [...] |
Mir wird im Editfeld zwar angezeigt, dass es geklappt hat, aber es passiert sont weiter nix....
Kann mir jemand weiterhelfen?
_________________ Die simpelsten Fehler sind meist die Schwersten...
|
|
DaKirsche
Beiträge: 187
Win XP Pro, SuSe Linux 7.3 - 10.2, Win 2k3 Server, Win 2000, Win NT 4.0
Delphi 2006 Pro, Java, HTML, SQL, PHP, CSS
|
Verfasst: Do 26.02.09 00:00
Hat niemand eine Idee, wie ich an die Umsetzung sonst herangehen kann, bzw. wodran der Fehler liegt, dass es icht dargestellt wird?
_________________ Die simpelsten Fehler sind meist die Schwersten...
|
|
jaenicke
Beiträge: 19276
Erhaltene Danke: 1741
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 26.02.09 00:42
Schiebeposts sind erst nach 24 Stunden erlaubt.
Deine Graustufenumwandlung dürfte relativ langsam sein, mit Scanline wäre es viel schneller:
delphiportal.de/360-...graustufen-umwandeln
Bist du sicher, dass das mit CreateDC so geht? Hier wird das anders gemacht:
www.delphi-library.d...erstellen_21561.html
|
|
SnuSnu
Beiträge: 17
|
Verfasst: Di 03.03.09 13:53
Genau das was du versuchst hab ich mal vor ein paar Monaten zum spaß gemacht.
Dabei wird ein Screenshot vom Fenster gemacht und je nach Einstellung weichgezeichnet oder in graustufen umgewandelt.
Dann wird eine Loadergrafik eingeblendet und die Grafik danach wieder ausgeblendet.
Ist eher so ein Ich-Test-Das-Mal-Kurz Code aber es funktioniert.
gruß Snu
Zuletzt bearbeitet von SnuSnu am Sa 27.03.10 20:26, insgesamt 1-mal bearbeitet
|
|
elundril
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Di 03.03.09 14:15
_________________ This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
|
|
matze
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: Di 03.03.09 15:25
lads doch einfach hier mal hoch. Dann können sich auch die anderen das anschauen.
_________________ In the beginning was the word.
And the word was content-type: text/plain.
|
|
|