Ansich finde ich das Interpolieren / Glätten der canvas.Stretchdraw Funktion ja gut.
Aber ich habe hier ein Programm geschrieben / von Delphi nach Lazarus Portiert, welches darauf angewiesen ist, dass nicht interpoliert wird.
Auch nach längerem Suchen ist es mir nicht gelungen diese Funktion ab zu schalten. Könnt ihr mir weiterhelfen ?
Zur Verdeutlichung seien die beiden Dateianhänge.
B1.png zeigt das Bild wie es durch Lazarus entsteht
b2.png zeigt das Bild wie es durch Delphi 5 entsteht.
In beiden Fällen wird eine Tbitmap die Width = 2 und Height = 2 hat auf das Panel via
Code: Alles auswählen
panel1.canvas.stretchdraw(0,0,panel1.width, panel1.height, bm);
Zum testen hier mal ein kleiner Code :
Code: Alles auswählen
Procedure TForm1.Button1Click(Sender: TObject);
Var
b: Tbitmap;
Begin
b := Tbitmap.create;
b.width := 2;
b.height := 2;
b.canvas.Pixels[0, 0] := clwhite;
b.canvas.Pixels[1, 0] := clwhite;
b.canvas.Pixels[1, 1] := clblack;
b.canvas.Pixels[0, 1] := clwhite;
b.Canvas.AntialiasingMode := amOff;
form1.canvas.AntialiasingMode := amOff;
form1.canvas.StretchDraw(rect(100, 100, 200, 200), b);
b.free;
End;
Update :
Also nu hab ich dann doch was gefunden:
http://www.mail-archive.com/lazarus@lis ... 08563.html" onclick="window.open(this.href);return false;
Es Scheint als ob AntialiasingModefür gtk und gtk2 nicht implementiert ist ...