Entwickler-Ecke

Multimedia / Grafik - auslesen von Image oder direkt von Bildschirm


Delphianer23 - Mo 03.02.03 20:59
Titel: auslesen von Image oder direkt von Bildschirm
um screenshots zu machen , die direkt im Programm noch verarbeitet werden, muss ich entweder die Pixel des images ablesen, oder die des Bildschirms. Das ganze wird dann in ein BItmap geschrieben. Kennt einer von euch den Befehl?


so wird in das leere Bitmap geschrieben: Was muss ich in "Imagepixel" schreiben, damit entweder das ImageBild oder das Bild des gesamten Monitors ins Bitmap kommen?
(Bitmap1.canvas.draw(0,0,"Imagepixel"));


Andreas Pfau - Mo 03.02.03 21:38

Also... ich muss ehrlich sagen, ich hab mir das 3 mal durchgelesen... was willst Du??? Formuliere dein Frage doch einfach so: "Was mussich tun, um...?". Villeicht stehe ich ja einfach nur auf dem Schlauch, aber ich glaube, du willst einfach nur 'nen Screenshot machen und in ein TBitmap laden, oder was?


Delphianer23 - Mo 03.02.03 21:50

ja genau, du hast es erfasst :) (EIn wunder bei meinem Text :oops: )

Wie geht es denn nun?
(screenshot in bitmap erstellen)


maximus - Di 04.02.03 12:16

teste mal dies:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var c:TCanvas;
    r: TRect;
begin
  c := TCanvas.Create;
  C.Handle := GetDC(HWND_DESKTOP);
  r := c.ClipRect;
  Image1.Canvas.CopyRect(rect(0,0,image1.Width,image1.Height) , C, r);
  ReleaseDC(HWND_DESKTOP, C.Handle);
  c.Free;
end;


viel spass


Delphianer23 - Di 04.02.03 15:08

Kapier ich nicht so recht, was soll den dass ganze rect da?

Und wie bekomm ich dass ganze auf ein Bitmap?? Wenn ich statt C, Bitmap1.canvas nehme sagt er mir dass nicht genug speicher vorhanden wäre. So funkzt es bei mir nicht.

Geht es nicht einfacher z. wie

Quelltext
1:
Bitmap1.Canvas.draw (0,0, canvastobmp(image1.canvas));                    

Mir fehlt gerade der Befehl: "canvastobmp" oder so ähnlich d.h Wie bekommt man aus nem image1.canvas die Bilddaten zum einlesen???

Moderiert von user profile iconTino: Code-Tags hinzugefügt.


smiegel - Di 04.02.03 15:39

Hallo,

vielleicht hilft das?


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
procedure ScreenShot(Bild: TBitMap); 
var c: TCanvas; 
    r: TRect; 
begin 
  c:=TCanvas.Create; 
  try 
    c.Handle:=GetWindowDC(0); 
    r:=Rect(0, 0, Screen.Width, Screen.Height);
    Bild.Width:=Screen.Width;
    Bild.Height:=Screen.Height; 
    Bild.Canvas.CopyRect(r, c, r); 
  finally 
    ReleaseDC(0, c.handle); 
    c.Free; 
  end; // try
end; // ScreenShot


Aufgerufen wird das ganze dann so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
var ScreenBild:TBitmap;
  ...
  ...
  ScreenBild:=TBitmap.Create;
  try
    ScreenShot(ScreenBild);
    ScreenBild.SaveToFile('Screenshot.bmp');
  finally
    ScreenBild.Free;
  end; // try
  ...


Delphianer23 - Di 04.02.03 16:00

danke so klappt es :D


maximus - Di 04.02.03 16:06

genau. das gleiche in grün :lol:

dachte halt du könntest mein image1:TImage selbständig zu TBitmap umformulieren. Man will ja nicht immer alles vorkauen :wink:

mfg mx