2010-05-21 12 views
17

मैं डब्ल्यूपीएफ में कैनवास पर आकर्षित करने के लिए लाइन क्लास का उपयोग कर रहा हूं और भले ही मैं StrokeThickness = 1 सेट करता हूं, यह लाइन 2 पिक्सल चौड़ी दिखाई देती है - यह लगभग जैसे कि न्यूनतम मोटाई दो है। मैं वास्तव में 1 पिक्सेल मोटी एक रेखा कैसे आकर्षित करूं?डब्ल्यूपीएफ में कैनवास पर एक रेखा कैसे खींची जाती है जो 1 पिक्सेल मोटी

Line myLine = new Line(); 

myLine.Stroke = System.Windows.Media.Brushes.Black; 

myLine.X1 = 100; 
myLine.X2 = 140; // 150 too far 
myLine.Y1 = 200; 
myLine.Y2 = 200; 

myLine.StrokeThickness = 1; 

graphSurface.Children.Add(myLine); 

उत्तर

32

दो बातें:

myLine.SnapsToDevicePixels = true; 
myLine.SetValue(RenderOptions.EdgeModeProperty, EdgeMode.Aliased); 
+2

मैजिक! बहुत धन्यवाद! – xarzu

3

इस जोड़ने का प्रयास करें:

myLine.SnapsToDevicePixels = true; 

कि प्रतिपादन "आधा पिक्सल" अपनी लाइन Antialias करने से WPF बंद हो जाएगा।

4

अलावा क्या सुझाव दिया गया है, यह भी संभव हो सकता है आपके स्क्रीन रिज़ॉल्यूशन से अधिक 96 डीपीआई है। आप जो भी माप डब्ल्यूपीएफ को दे रहे हैं, डिफ़ॉल्ट रूप से डब्ल्यूपीएफ हमेशा यह मान लेगा कि 96 पिक्सेल 1 इंच के अनुरूप है।

परिणाम 1 9 2 डीपीआई (9 6 * 2) की स्क्रीन पर है, मोटाई 1 की रेखा खींचने से 2 पिक्सल की मोटाई वाली रेखा खींची जाएगी।

यदि ऐसा है, तो आपको इकाइयों को स्पष्ट रूप से निर्दिष्ट करना होगा।

संबंधित मुद्दे