Ben FireMonkey (32x24 piksel diyelim) küçük bir bit eşlem olduğunu varsayalım. Bu yüzden bir form üzerine bir TImage koymak ve yapıcı bu kod var:FireMonkey (FMX) Bitmap ve renkleri
Image1.Bitmap.Create(32, 24);
if Image1.Bitmap.Canvas.BeginScene then
try
Image1.Bitmap.Canvas.Fill.Color := claBlack;
Image1.Bitmap.Canvas.Stroke.Color := claYellow;
Image1.Bitmap.Canvas.FillRect(RectF(0,0,32,24), 0, 0, AllCorners, $FF);
Image1.Bitmap.Canvas.DrawLine(PointF(1,1), PointF(10,10), $FF);
finally
Image1.Bitmap.Canvas.EndScene;
Image1.Bitmap.BitmapChanged;
end;
Bu Blackground güzel bir diyagonal çizgi çizer.
Şimdi yapmak istediğim, çizgi çizmesinden etkilenen pikselleri belirlemek için bitmap'i ayrıştırmak. Ben kullanarak piksel çekle temel piksel yaparsanız:
for y := 0 to 23 do
for x := 0 to 31 do
if Image1.Bitmap.Pixels[x,y] <> claBlack then
memo1.Lines.Add(Format('x=%d. y=%d. c=%x', [x,y,Image1.Bitmap.Pixels[x,y]]));
benim Memo üzerine çıktısı:
x=0. y=0. c=FF3C3C00
x=1. y=0. c=FF3C3C00
x=0. y=1. c=FF3C3C00
x=1. y=1. c=FFE7E700
x=2. y=1. c=FF3C3C00
x=1. y=2. c=FF3C3C00
x=2. y=2. c=FFE7E700
x=3. y=2. c=FF3C3C00
x=2. y=3. c=FF3C3C00
x=3. y=3. c=FFE7E700
x=4. y=3. c=FF3C3C00
x=3. y=4. c=FF3C3C00
x=4. y=4. c=FFE7E700
x=5. y=4. c=FF3C3C00
x=4. y=5. c=FF3C3C00
x=5. y=5. c=FFE7E700
x=6. y=5. c=FF3C3C00
x=5. y=6. c=FF3C3C00
x=6. y=6. c=FFE7E700
x=7. y=6. c=FF3C3C00
x=6. y=7. c=FF3C3C00
x=7. y=7. c=FFE7E700
x=8. y=7. c=FF3C3C00
x=7. y=8. c=FF3C3C00
x=8. y=8. c=FFE7E700
x=9. y=8. c=FF3C3C00
x=8. y=9. c=FF3C3C00
x=9. y=9. c=FFE7E700
x=10. y=9. c=FF3C3C00
x=9. y=10. c=FF3C3C00
x=10. y=10. c=FF3C3C00
yüzden yorumlanması ve "bulanık" ne demek? renklerimin (yukarıdaki c ile temsil edilen) çizgisi, claYellow'a ($ FFFF00) eşit değildir. Yatay veya dikey bir çizgi çizersem, efekt aynıdır. İnme kalınlığımı 2 olarak değiştirirseniz ve çapraz olmayan bir çizgi çizersem, clady-kat çizer ama 2 piksel kaplar.
Çizdiğim "doğru" pikselleri nasıl belirleyebilirim? Yukarıdaki örnekte, FFE7E700 $ 'ı arayabilirdim (ancak), bu değeri aramayı nasıl bilebilirim (çizgiyi farklı bir renkte çizersem, bu değer farklı olurdu). Çizdiğim renk ile işlenen gerçek renk arasında tutarlı bir "fark" olup olmadığını görmeye çalıştım ancak bir tane bulamadı.
Teşekkür
değil bir cevap teşekkür ederim ... ama başka ilginç [soru] (http://stackoverflow.com/questions/8966175/why-is-drawing-a-line-less-than -1-5-piksel-kalın-iki kat-yavaş-çizim-a-line) – Whiler
Ben FireMonkey bilmiyorum, ama bu sıradan bir antialiasing daha ya da daha az bir şey gibi geliyor. – TLama
Bunun FireMonkey ile ilgisi yoktur. Bu, temeldeki grafik sistemine (GDI +, D2D, OpenGL) tamamen bağımlıdır. –