Hallo,
ich nehme an, Dein Image1 ist ein TImage, das Du auf ein Form gezogen hast. Wenn es um Delphi ginge, würde ich sagen, In TImage kannst Du kein *.jpg rein laden. Du brauchst die Unit JPeg und ein TJpegImage und musst das JpegImage nach dem Laden an die Image1 zuweisen.
Code: Alles auswählen
{$ifndef fpc}
Uses Jpeg;
{$endif}
procedure TForm1.Button2Click(Sender: TObject);
var canv : tcanvas;
w,h : integer;
JpegImage : tJpegImage;
begin
Image1.Stretch:= true;
image1.Picture.Clear;
If checkbox1.checked then
begin
JpegImage := TJpegImage.Create;
JpegImage.LoadFromFile('firmenlogo.jpg');
Image1.Picture.Bitmap.Assign(JpegImage);
JpegImage.Free;
end
else
Image1.Picture.LoadFromFile('firmenlogo.bmp');
w := image1.Picture.width; // changed by "loadfromfile"
h := image1.Picture.height; // changed by "loadfromfile"
canv := image1.Picture.Bitmap.canvas;
canv.Pen.Color := clyellow;
canv.pen.style := pssolid;
canv.pen.width := h div 20;
canv.line(1,1,w,h);
Aber in Lazarus ändert mein Code nichts, eine Unit Jpeg gibt's da nicht und braucht man nicht und in Lazarus lässt sich das *.jpg auch in TImage rein laden.
Ich hab geänderte Windows Farben. Meine TForm.Color ist hellgrün und bei *.jpg ist auch der Strich hellgrün, also eigentlich transparent. Warum, weiß ich noch nicht. Ich hab auf Lazarus 1.1, fpc 2.7.1 und WinXP getestet.
Aber folgender Workaround macht Schluss mit der Transparenz:
Code: Alles auswählen
procedure TForm1.Button3Click(Sender: TObject);
var canv : tcanvas;
w,h : integer;
JpegImage : tJpegImage;
begin
Image1.Stretch:= true;
image1.Picture.Clear;
If checkbox1.checked then
begin
JpegImage := TJpegImage.Create;
JpegImage.LoadFromFile('firmenlogo.jpg');
image1.Picture.Bitmap.width := JpegImage.Width;
image1.Picture.Bitmap.height := JpegImage.Height;
Image1.Picture.Bitmap.Canvas.Draw(0, 0, JpegImage);
JpegImage.Free;
end
else
Image1.Picture.LoadFromFile('firmenlogo.bmp'); // funktioniert
w := image1.Picture.width; // changed by "loadfromfile"
h := image1.Picture.height; // changed by "loadfromfile"
canv := image1.Picture.Bitmap.canvas;
canv.Pen.Color := clyellow;
canv.pen.style := pssolid;
canv.pen.width := h div 20;
canv.line(1,1,w,h);
end;
Gruß
Heiner