मान लें कि मेरे पास फायरमोनकी में एक छोटा सा बिटमैप है (32x24 पिक्सल कहें)। तो मैं एक फार्म पर एक TImage रख दिया और निर्माता में इस कोड है:फायरमोनकी (एफएमएक्स) बिटमैप और रंग
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;
यह ब्लैकग्राउंड पर एक अच्छी विकर्ण रेखा खींचता है।
मैं जो करना चाहता हूं वह अब रेखा ड्रॉ से प्रभावित पिक्सेल निर्धारित करने के लिए बिटमैप को पार्स कर रहा है। अगर मैं का उपयोग कर पिक्सेल चेक द्वारा एक बुनियादी पिक्सेल कार्य करें:
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]]));
मेरी मेमो पर उत्पादन होता है:
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
तो यह व्याख्या है और "धुंधला"? रंगों के रूप में मेरी रेखा (उपरोक्त सी द्वारा प्रतिनिधित्व) claYellow ($ FFFF00) के बराबर नहीं हैं। यदि मैं एक क्षैतिज या लंबवत रेखा खींचता हूं, तो प्रभाव वही होता है। अगर मैं अपनी स्ट्रोक मोटाई को 2 में बदलता हूं और एक गैर-विकर्ण रेखा खींचता हूं जो इसे क्लेयेलो में खींचता है लेकिन इसमें 2 पिक्सेल शामिल होते हैं।
तो मैं "सच्चे" पिक्सेल को कैसे निर्धारित कर सकता हूं। उपर्युक्त नमूने में मैं $ FFE7E700 की तलाश करूंगा (लेकिन) मुझे उस मूल्य को देखने के लिए कैसे पता चलेगा (दिया गया है कि अगर मैंने एक अलग रंग में रेखा खींची है, तो वह मान अलग होगा)। मैंने यह देखने की कोशिश की कि मेरे द्वारा खींचे गए रंग और वास्तविक रंग के बीच एक लगातार "अंतर" है, लेकिन एक का पता नहीं लगा सका।
धन्यवाद
एक जवाब है ... लेकिन एक और दिलचस्प [सवाल] (http://stackoverflow.com/questions/8966175/why-is-drawing-a-line-less-than -1-5-पिक्सेल-मोटी-दोगुनी-धीमी-जैसी-रेखा-रेखा-रेखा) – Whiler
मुझे फ़ायरमॉन्की नहीं पता, लेकिन यह सामान्य एंटीअलाइजिंग से अधिक या कम नहीं लगता है। – TLama
इसका फ़ायरमॉन्की से कोई लेना देना नहीं है। यह अंतर्निहित ग्राफिक सिस्टम (जीडीआई +, डी 2 डी, ओपनजीएल) पर पूरी तरह से निर्भर है। –