![]() |
Re: bmp speichern
Moin Jens,
ich habe das gerade mal mit Lazarus getestet: Bild wurde korrekt gespeichert. Wie kommt denn das, was Du speichern willst in das Image rein? Ausserdem habe ich den kompletten Pfad, also inclusive Laufwerk und Verzeichnis, mit angegeben. |
Re: bmp speichern
@ Luckie
wo mache ich was ? ich habe nur diesen Code:
Delphi-Quellcode:
das Bild it selber ein Screenshot welcher in Image1 geladen wird (Screenshot wird mit dem Programm gemacht, also nicht aus einer datei geladen) hier der erste Code dazu:
// Speichern
procedure TForm7.speichern(Sender: TObject); begin try Image1.Picture.SaveToFile('TestBitmap.bmp'); finally ShowMessage('Bild wurde gespeichert.'); end; end;
Delphi-Quellcode:
die Procedur ScreenShot schau dann so aus:
// Screenshot
procedure TForm7.Button3Click(Sender: TObject); var tempBild: TBitmap; begin WindowState := wsminimized; Image1.picture := nil; tempBild := TBitmap.Create; Sleep(1000); ScreenShot(tempBild,Edit2.Text,Edit1.Text,Edit3.Text,Edit4.Text); Image1.Picture.Assign(tempBild); tempBild.Free; WindowState := wsNormal; Form7.BringToFront; SetForegroundWindow(FindWindow(nil,'Screenshot')); end;
Delphi-Quellcode:
also damit lade ich den Screenshot in Image1
procedure ScreenShot(var Bild: TBitMap; startX2 : string; startY2 : string; endeX2 : string; endeY2 : string);
var Mydc : cardinal; MausPos : TPoint; startX, startY, endeX, endeY : integer; startX1, startY1, endeX1, endeY1 : integer; begin startX := strtoint(startX2); endeX := strtoint(endeX2); startY := strtoint(startY2); endeY := strtoint(endeY2); startX1 := startX; endeX1 := endeX; startY1 := startY; endeY1 := endeY; if startX > endeX then begin startX := endeX1; endeX := startX1; end; if startY > endeY then begin startY := endeY1; endeY := startY1; end; MyDc := GetDC(0); GetCursorPos(MausPos); Bild.PixelFormat := pf32bit; begin Bild.Width := endeX - startX; Bild.Height := endeY - startY; if Bild.Width < 0 then Bild.Width := Bild.Width * -1; if Bild.Height < 0 then Bild.Height := Bild.Height * -1; BitBlt(Bild.Canvas.Handle,0,0,endeX,(Screen.Height - startY),Mydc,startX,startY,SRCCOPY); end; ReleaseDC(0, Mydc); end; liegt da vielleicht irgendwo das Problem ? @ Christian Seehase an dem Patrh sollte es nicht liegen, das Bild wird ja angelegt, ist halt nur schwarz welche Version von Lazarus verwendest du denn ? ich habe den SnapShot vom 21.03.2005 genommen also immer das aktuellste was es gibt |
Re: bmp speichern
Moin Jens,
ich habe hier die 0.94 beta vom 03.01.2005. Mit der kann ich Dein Beispiel noch nicht einmal nachvollziehen, da diese Version schon TBitmap.Create nicht kennt. :? |
Re: bmp speichern
Frage: Kann es irgendwie sein, dass das Bild zum Zeitpunkt des Abspeicherns noch immer nil ist?
|
Re: bmp speichern
Mit der Meldung würde ich das auch eher so schreiben:
Delphi-Quellcode:
Sonst zeigt er doch die Meldung auch an, wenn das Bild nicht ordnungsgemäß gespeichert wurde...
procedure TForm7.speichern(Sender: TObject);
begin try Image1.Picture.Bitmap.SaveToFile('TestBitmap.bmp'); ShowMessage('Bild wurde gespeichert.'); except ShowMessage('Bild konnte nicht gespeichert werden.'); end; end; |
Re: bmp speichern
Moin Jens,
versuch' doch mal die Bitmap direkt, also ohne Umweg über Image zu speichern. TBitmap kennt schliesslich auch eine Methode SaveToFile. |
Re: bmp speichern
Liste der Anhänge anzeigen (Anzahl: 1)
@ Alexander
habe jetzt mal deinen Code drinn, Bild wird gespeichert @ Christian Seehase was soll ich machen ? @ all habe jetzt mal nur einen screenshot von einem windowsordner gemacht, sprich von dem gelben icon, also sehr klein, das ergebnis ist ein bild in dieser größe, allerdings ist das jetzt nicht mehr komplett schwarz sondern sehr dunkel mit einigen farblichen stellen, ich hänge das bild hier mal an |
Re: bmp speichern
Sieht denn der Screenshot im Image richtig aus? Also ohne zu speichern?
Hast du schon mal einfach:
Delphi-Quellcode:
probiert? Auch wenn wahrscheinlich einfach nur die Methode im bitmap aufgerufen wird.
Image1.Picture.SaveToFile();
|
Re: bmp speichern
Hier habe ich schon mal nen ScreenShot gepostet, das funktioniert alles, nur das speichern nicht:
![]()
Delphi-Quellcode:
oder besser:
Image1.Picture.SaveToFile();
Delphi-Quellcode:
habe ich auch schon versucht, das interessante war ja der kleine screenshot denn der war nicht mehr komplett schwarz (einfach mal ansehen)
Image1.Picture.SaveToFile('TestBitmap.bmp');
|
Re: bmp speichern
Habe ich schon geschrieben und dass du den String noch einfügen musst, ist ja klar.
Ich weiß momentan leider nicht weiter, eigentlich sollte es funktionieren. Du könntest aber mal dein Programm-Source hochladen, evtl. können wir so besser helfen... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz