Anitaliasing bei TPaintBox/Canvas

Antworten
bastler
Beiträge: 10
Registriert: Sa 30. Jan 2016, 15:54

Anitaliasing bei TPaintBox/Canvas

Beitrag von bastler »

Hallo,

ich zeichne wie folgt eine Linie in einer TPaintBox:

Code: Alles auswählen

paintRuder.Canvas.AntialiasingMode := amOn;
paintRuder.Canvas.Pen.Width := 5;
paintRuder.Canvas.Pen.Color := $0000EA00;
paintRuder.Canvas.Line(0,0, 40,30 ));


Da die Linie in der Darstellung sehr pixelig ist, dachte ich mir, ich setze noch vorher die Eigenschaft Antialiasing auf "amOn". Jedoch hat das keine Auswirkung. Mein Betriebssystem Windows 10. Ist dies vielleicht das Problem, dass die Linie pixelig bleibt?
Kennt ihr andere Möglichkeiten weiche Linien zu zeichnen?

Vielen Dank für die Hilfe!
der bastler

Benutzeravatar
theo
Beiträge: 10467
Registriert: Mo 11. Sep 2006, 19:01

Re: Anitaliasing bei TPaintBox/Canvas

Beitrag von theo »

Das ist anscheinend für Win nicht funktional.
Aggpas oder BGRABitmap als Ausweg steht hier: http://forum.lazarus.freepascal.org/ind ... ic=24408.0

SoE
Beiträge: 84
Registriert: Mo 31. Aug 2015, 01:51

Re: Anitaliasing bei TPaintBox/Canvas

Beitrag von SoE »

Es gibt auch noch VampyreImaging LIB oder Graphics32 und wahrscheinlich noch viele andere...

Man kann allerdings mit CANVAS.LineTo auch nur Pixel malen und hat dann den großen Vorteil, dass man nur einmal zeichnen muß und sofort den Schatten und die Kantenglättung mitgezeichnet hat.
Nur weil das "Ding" Line heißt, bedeutet das nicht, dass damit keine Pixel zu zeichnen sind. Man benötigt dann natürlich mindestens noch zwei FOR-Schleifen z.B. für einen Rahmen.
Der Rahmen sieht dann so aus als hätte man ihn in GIMP oder PS gebaut. Am schnellsten geht das mit 'nem selbstgebauten ColorPicker. (z. B. LazPaint SRC)

Liegt halt immer daran was genau man bauen möchte und ob man SemiTransparente Pixel benötigt usw....

bastler
Beiträge: 10
Registriert: Sa 30. Jan 2016, 15:54

Re: Anitaliasing bei TPaintBox/Canvas

Beitrag von bastler »

Ich habe jetzt BGRABitmap verwendet und funktioniert wie gewünscht mit Anitaliasing :-). Danke!

Antworten