Thema: bmp speichern

Einzelnen Beitrag anzeigen

Nisbo

Registriert seit: 10. Mär 2005
191 Beiträge
 
Delphi 5 Standard
 
#12

Re: bmp speichern

  Alt 22. Mär 2005, 06:59
@ Luckie

wo mache ich was ?
ich habe nur diesen Code:
Delphi-Quellcode:
// Speichern
procedure TForm7.speichern(Sender: TObject);
begin
     try
        Image1.Picture.SaveToFile('TestBitmap.bmp');
     finally
        ShowMessage('Bild wurde gespeichert.');
     end;
end;
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:

Delphi-Quellcode:
// 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;
die Procedur ScreenShot schau dann so aus:

Delphi-Quellcode:
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;
also damit lade ich den Screenshot in Image1
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
Jens
  Mit Zitat antworten Zitat