Ich bastle gerade an einem Tool zum Vermessen von Bildern. Dazu nutze ich eine TPaintbox in der ich alles Zeichne:
Code: Alles auswählen
Procedure TForm1.PaintBox1Paint(Sender: TObject);
Var
i: Integer;
Begin
If Not assigned(fImage) Then exit;
// Das Eigentliche Bild
PaintBox1.Canvas.StretchDraw(rect(-ScrollBar1.Position, -ScrollBar2.Position, br.X - ScrollBar1.Position, br.Y - ScrollBar2.Position), fImage); // <-- Um diese Zeile geht es
// Die Zusatzsachen
fMetrik.Render();
If CheckBox1.Checked Then Begin
RenderLegend();
End;
For i := 0 To high(fMeasureElements) Do Begin
fMeasureElements[i].Render();
End;
fPerspectiveCorrection.Render;
fHeightCorrection.Render;
fRotateCorrection.Render;
// Die Vorschau immer als Letztes
fPreview.Render(PaintBox1.Canvas);
End;
unter Windows nutzt Stretchdraw eine Nearest Neighbour Interpolation ist ist recht fix
Unter Linux nutzt es eine Bilineare Interpolation und ist ätzend Langsam.
Kennt hier jemand einen Weg wie ich auch unter Linux die Nearest Neighbour interpolation bekomme, oder das generell etwas beschleunigen kann, normalerweise mache ich so was alles in OpenGL und da gibt es solche Probleme einfach nicht