2010-03-04 10 views
15

के बिना कैसे बढ़ा सकता हूं मैं WPF में लिखे गए एसईएम छवि प्रसंस्करण अनुप्रयोग पर काम कर रहा हूं। मेरे पास कैनवास से व्युत्पन्न एक छवि डिस्प्ले नियंत्रण है, जो ड्रॉइंगविज़ुअल (प्रत्येक "परत" के लिए एक) का उपयोग करके छवि & ओवरले प्रदर्शित करता है। यह ज़ूम & स्केल & का उपयोग करके पैन लागू करता है, जो ड्रॉइंगविज़ुअल पर लागू होता है।मैं डब्ल्यूपीएफ में बिटमैप को बिना चिकनाई पिक्सल

जब मैं अलग-अलग पिक्सेल देखने के लिए छवि में ज़ूम करता हूं, तो स्पष्ट रूप से बिटमैप को फैलाने के लिए बिलीनेर फ़िल्टरिंग का उपयोग करके चिकनी दिखाई देता है (कोई आश्चर्य नहीं, क्योंकि डब्ल्यूपीएफ को डायरेक्ट 3 डी के माध्यम से प्रस्तुत किया जाता है)। हालांकि, मेरे उपयोग के मामले में, मैं व्यक्तिगत पिक्सल को तेज बॉक्स के रूप में देखता हूं, सामान्य रूप से फ़ोटोशॉप जैसी किसी भी छवि संपादक में। यही कारण है कि मेरे ऐप का उपयोगकर्ता छवि को ज़ूम करता है -> पिक्सेल स्तर पर काम करने में सक्षम होने के लिए।

क्या WPF में ऐसा विकल्प है (इसे प्रदर्शित करने से पहले बिटमैप मैन्युअल रूप से खींचने के अलावा)? मैं कुछ भी नहीं ढूंढ पाया। पहले से

धन्यवाद, Zbynek Vrastil चेक गणराज्य

उत्तर

16

अंत में विशेषज्ञों का आदान-प्रदान से कुछ मदद के साथ, एक जवाब मिल गया। क्लास रेंडरऑप्शन संलग्न संपत्ति को परिभाषित करता है बिटमैपस्कलिंग मोड, जिसे निकटतम नेबेबर पर सेट किया जा सकता है। तो,

RenderOptions.SetBitmapScalingMode(imageDisplay, BitmapScalingMode.NearestNeighbor); 

चाल है।

Zbynek Vrastil

+0

कूल! मुझे बहुत परेशानी बचाई। –

+11

और आप इसे एक्सएएमएल से भी सेट कर सकते हैं: '' –

0

नफरत बातों पर एक dampener डाल करने के लिए, लेकिन अगर GDI + तरह NearestNeighbor काम करता है, तो यह आपके लिए एक सीमित सफलता दे देंगे। जैसे ही आप उच्च विपरीत के क्षेत्रों में आवर्धन बढ़ाते हैं, आपको वांछित परिणाम नहीं मिल सकते हैं। जीडीआई में + आप काले रंग के नीले रंग के होते हैं, और सफेद लाल हो जाते हैं - फिर मैं उच्च विपरीत क्षेत्रों में तनाव डालता हूं! यदि यह डब्ल्यूपीएफ में मामला नहीं है, तो खुद को भाग्यशाली मानें!

शायद एक डब्ल्यूसीएफ डेवलपर इसकी पुष्टि कर सकता है?

मुझे पता चला है कि विचार करने के लिए और विकल्प हैं, लेकिन मैं केवल जीडीआई + Graphics कक्षा के लिए बात कर सकता हूं, जो कि किसी के लिए उपयोगी हो सकता है।

Graphics graph = e.Graphics; 
graph.InterpolationMode = InterpolationMode.NearestNeighbor; 
graph.CompositingQuality = CompositingQuality.AssumeLinear; 
graph.SmoothingMode = SmoothingMode.None; 

यह मेरे लिए काम करता है। मुझे लगता है कि SmoothingMode चाल है। उम्मीद है कि यह किसी और को वहां मदद करता है।

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