আমার ছবিগুলি অস্পষ্ট! ডাব্লুপিএফ এর স্ন্যাপসটো ডিভাইসপিক্সেলগুলি কেন কাজ করছে না?


165

আমি আমার ডাব্লুপিএফ অ্যাপ্লিকেশনটিতে কিছু চিত্র ব্যবহার করছি।

XAML:

<Image Name="ImageOrderedList"
       Source="images/OrderedList.png"
       ToolTip="Ordered List"
       Margin="0,0,5,5"
       Width="20"
       Height="20"
       SnapsToDevicePixels="True"
       MouseUp="Image_MouseUp"
       MouseEnter="Image_MouseEnter"
       MouseLeave="Image_MouseLeave" />

তবে এগুলি অস্পষ্ট বলে মনে হচ্ছে।

কেন SnapsToDevicePixels="True"এই লাইনটি এই সমস্যাটিকে আটকাচ্ছে না ?



4
আপনার চিত্রের লিঙ্কগুলি ভেঙে গেছে বলে মনে হচ্ছে। যদি আপনার কাছে এখনও মূল চিত্র থাকে তবে দয়া করে এগুলি stack.imgur এ পুনরায় আপলোড করুন। ধন্যবাদ।
ইলমারি করোনেন

1
নীচের টিপসের কোনওটি যদি অবিলম্বে কাজ না করে, তবে চেষ্টা করুন এবং আপনার চিত্রের আকারকে প্রস্থ এবং উচ্চতায় 4 এর একটি ফ্যাক্টারে পরিবর্তন করুন। সুতরাং 179 এক্স 44 এর পরিবর্তে 176 এক্স 44 চেষ্টা করুন
মার্টিন লটারিং

উত্তর:


233

আপনি ডাব্লুপিএফ 4 এ এখন উপলব্ধ একটি নতুন সম্পত্তি চেষ্টা করার কথা বিবেচনা করতে পারেন । ত্যাগ RenderOptions.BitmapScalingModeকরার HighQuality বা শুধু কি তা মেনে নেবে না।

অ্যাপ্লিকেশনটি জুম ইন করার সময় জ্যাগি বিটম্যাপগুলি না নিয়েই নিকটস্থ নিকটবর্তী আমার পক্ষে কাজ করেছিলেন। আইকনগুলি অদ্ভুত উপায়ে আকার দিচ্ছিল এমন কোনও গ্লিটসও ঠিক করে দেবে বলে মনে হয় না।

আপনার মূল উপাদান (যেমন আপনার প্রধান উইন্ডো) উপর এই সম্পত্তি যোগ করুন: UseLayoutRounding="True"

পূর্বে কেবল সিলভারলাইটে উপলভ্য একটি সম্পত্তি এখন সমস্ত বিটম্যাপ আকার দেওয়ার সমস্যাগুলি স্থির করেছে। :)


4
এই নতুন সম্পত্তির আরও তথ্য এখানে পাওয়া গেছে: ব্লগস.এমএসএনএন
টেক্সট

5
UseLayoutRendering = "সত্য" হ'ল আমি যা ব্যবহার করেছি - এটি আমার অস্পষ্ট চিত্রগুলি সমাধান করার জন্য উপযুক্ত। ধন্যবাদ!
ম্যাট ডেক্রে

25
অবশেষে !! UseLayoutRounding ডিফল্টরূপে সেট করা উচিত। চিত্রগুলি কিছু জায়গায় আসল এবং এমনকি পাঠ্যের মতো প্রদর্শিত হয় (কনটেক্সটেমেনাসের মতো, কমপক্ষে আমার জন্য) আগের চেয়ে খাঁটি দেখায়। ধন্যবাদ, ডোমোকুন!
অনুদান দিন

3
আমি অনুমান করি আমাদের মধ্যে যারা এখনও আটকে আছে। নেট 3.5 এর কোনও বিকল্প নেই?
jpierson

2
আমি খুঁজে পাচ্ছি যে আমি যদি ইমেজগুলিতে সম্পত্তিটি প্রসারিত না করে সেটাকে সেট করি তবে এটি আমার সমস্যার সমাধান করে, তবে অন্যান্য সমস্ত দৃশ্যে এমনকি হাই-কোয়ালিটির চিত্র উপস্থাপনা এবং আলিয়াজিং বন্ধ থাকলেও চিত্রটি প্রসারিত এখনও ডাব্লুপিএফকে স্তন্যপান করে। তবে, কমপক্ষে এটি প্রসারিত চিত্রগুলির জন্য সমস্যাটি স্থির করেছে (যা প্রথম স্থানে সমস্যা হওয়া উচিত ছিল না)
খ্রিস্টান ফান্ডলে

74

পরিবর্তে ব্যবহারের SnapsToDevicePixelsপরিবর্তে, আমি পরিবর্তে ব্যবহার করেছি RenderOptions.BitmapScalingModeএবং তারা এখন দুর্দান্ত এবং খাস্তা!

XAML:

<Image Name="ImageOrderedList"
       Source="images/OrderedList.png"
       ToolTip="Ordered List"
       Margin="0,0,5,5"
       Width="20"
       Height="20"
       RenderOptions.BitmapScalingMode="NearestNeighbor"
       MouseUp="Image_MouseUp"
       MouseEnter="Image_MouseEnter"
       MouseLeave="Image_MouseLeave" />

1
এছাড়াও << চিত্র> ট্যাগে বর্ণিত হিসাবে যদি আপনার চিত্রটি সঠিক আকারের হয় তবে তা এটি স্কেল করতে হবে না এবং এটি চটকাতে রেন্ডার করা উচিত।
বিয়ার্ডো

1
আমি নিশ্চিত নই যে এটির একটি আলাদা ডিপিআই
ডেভ

1
বিয়ার্ডো, উত্স গ্রাফিক এবং <চিত্র> উভয়ই 20 পিক্সেল দ্বারা 20 পিক্সেল। আমি যেমন এটি বুঝতে পারি, সমস্যাটি ডাব্লুপিএফ থেকে আসে। এটি মনিটরের পিক্সেল গ্রিডটিকে অগ্রাহ্য করতে চায়, তাই এটি লজিক্যাল গ্রিড সাধারণত শারীরিক গ্রিডের সাথে পুরোপুরি লাইন ধরে না।
জ্যাক পিটারসন

9
@ জ্যাক প্রস্থ = "20" এর অর্থ 20 পিক্সেল নয়। এর অর্থ ইঞ্চি 20/96। যদি আপনার ওএসটি 96 ডিপিআই এ চালানোর জন্য কনফিগার করা থাকে তবে তা 20 পিক্সেল। এখন আপনার নিকটতম প্রতিবেশী উদাহরণস্বরূপ 160 ডিপিআই ভাল মনিটরে কীভাবে দেখবে? এবং যখন আপনি 300 ডিপিআইতে মুদ্রণ করবেন তখন এটি কেমন হবে? আপনার ডেভ মেশিনের জন্য আপনার অনুকূলিত হওয়া উচিত নয়।
ফ্র্যাঙ্ক ক্রুয়েজার

2
আমি আরও দেখতে পেলাম যে পিক্সেল-আকারের চিত্রগুলির জন্য নিকটবর্তী নেবারটি হাই কোয়ালিটির চেয়ে অনেক ভাল, বিশেষত যদি আপনি এটিকে img.Width = imgSource.PixelWidth এর সাথে যুক্ত করেন; img.Height = imgSource.PixelHeight। আমার ক্লায়েন্ট বিভিন্ন ক্রেজি ডিপিআই মান সহ কিছু চিত্র সরবরাহ করেছিল এবং আমি ক্লায়েন্টকে সেগুলি সমস্ত রূপান্তর করতে বলতে পারি না, তাই আমাকে এই হ্যাকটি ব্যবহার করতে হয়েছিল।
জাস্টামার্টিন

23

জ্যাক পিটারসনের জন্য +1

আমি। নেট 3.5 এসপি 1 ব্যবহার করছি এবং এটি প্রচুর সংখ্যক ফাজি চিত্রগুলির জন্য সর্বাধিক সাধারণ সমাধানের মতো দেখায়। জায়গায় জায়গায় রেন্ডারঅ্যাপশনগুলি নির্দিষ্ট করা কোনও বড় বিষয় নয়, তবে তৃতীয় পক্ষের উপাদানগুলির জন্য অ্যাপ্লিকেশন-স্তরের সংস্থানগুলির একটি স্টাইলটি বোঝায়:

 <Style TargetType="{x:Type Image}">
    <Setter
        Property="RenderOptions.BitmapScalingMode"
        Value="NearestNeighbor" />
 </Style>

অ্যাভালনডক অস্পষ্ট আইকনগুলি রেন্ডার করতে শুরু করলে সুন্দরভাবে কাজ করেছিল।


1
আভালনডকও আমাকে একই মাথা ব্যথা দিচ্ছে ... এবং আমি এখনও আছি। নেট 3.5
Ignacio সোলার গার্সিয়া

9

UseLayoutRounding="True"উইন্ডোতে মূল উইন্ডোটি ব্যবহার করা অনেক ক্ষেত্রে কাজ করে তবে ডাব্লুপিএফ রিবন নিয়ন্ত্রণ ব্যবহার করার সময় আমি একটি সমস্যার মুখোমুখি হয়েছি । আমার অ্যাপ্লিকেশন প্রাসঙ্গিক ট্যাবগুলির উপর নির্ভর করে যা ব্যবহারকারী কী করে তা অনুসারে প্রদর্শিত হয় এবং যখন আমি সেট করে UseLayoutRoundingরাখি True, প্রসঙ্গত ট্যাবটি প্রদর্শিত হবে না এবং রিবনবটনের চিত্রও নয়। এছাড়াও, অ্যাপ্লিকেশনটি বেশ কয়েক সেকেন্ডের জন্য স্থির হয়ে যায় এবং সিপিইউ ফ্যান গান শুরু করে।

RenderOptions.BitmapScalingMode="NearestNeighbor"আমার চিত্র ব্যবহার করে চিত্রের রেন্ডারিংয়ের সমস্যাগুলি (ফাজি এবং ক্রপযুক্ত চিত্র) সংশোধন করা হয়েছে এবং রিবন প্রাসঙ্গিক ট্যাব ব্যবহারের সাথে সম্পূর্ণ সুসংগত।


1
UseLayoutRounding = "সত্য" আমার পক্ষে কাজ করেছে। ধন্যবাদ। mikecroteau.wordpress.com/2013/01/20/wpf-net-xaml-blurry-images
mcroteau

6

রেন্ডারঅপশনস.বিটম্যাপস্কেলিংমোড = "নিকটবর্তীনিবার" বেশিরভাগ সময় ভাল কাজ করে। যাইহোক, মাঝে মাঝে আপনি গ্রাফিকাল গ্ল্যাচগুলি পাবেন (আমার ক্ষেত্রে, 5 টির মধ্যে 4 টি চিত্র ভাল ছিল, তবে পঞ্চমটি ডান প্রান্তে সামান্য বিকৃতি পেয়েছিল)। আমি এটিকে আমার নিয়ন্ত্রণের ডান মার্জিনটি 1 দ্বারা বাড়িয়ে ঠিক করেছি।

যদি এটি এখনও ঠিক করে না, ইউজেনজেড উল্লিখিত উপরে বিটম্যাপ বর্গ নিয়ন্ত্রণ চেষ্টা করুন। এটি চিত্র নিয়ন্ত্রণের জন্য একটি প্রতিস্থাপন এবং এখনও পর্যন্ত এটি আমার জন্য বেশ ভালভাবে কাজ করেছে। Http://blogs.msdn.com/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx দেখুন


5

আপনার ডাব্লুপিএফ অ্যাপ্লিকেশন যেমন কাজ করছে আপনি একই ডিপিআইতে চিত্রটি সংরক্ষণ করেছেন তা নিশ্চিত করুন, কিছু চিত্র ফর্ম্যাটে এই তথ্যটি মেটাডেটা হিসাবে সঞ্চিত রয়েছে। আমি জানি না এটি সমস্যার সমাধান করে কিনা তবে আমি কিছু সমস্যা এড়াতে পেরেছি যেখানে চিত্রগুলি পুনরায় আকার দিয়েছে 100% প্রত্যাশার চেয়ে বড় বা ছোট হয়েছে।

অনুরূপ কিছু হতে পারে।


5

ব্যবহারের UseLayoutRounding ট্রু = আপনার অ্যাপ্লিকেশনের মধ্যে শীর্ষ সবচেয়ে উপাদানে



3

আমি খুঁজে পেয়েছি যে রেন্ডারঅ্যাপশনস it বিটম্যাপস্কেলিংমোড = "নিকটবর্তীনিবার" আমার পক্ষে কাজ করে না। আমি ডায়রেক্টএক্স 9.0 সি এর সাথে উইন্ডোজ এক্সপি এক্স 32 ব্যবহার করছি। ডাব্লুপিএফের প্রকৃত রেন্ডারিং ডাইরেক্টএক্স-এর সাথে সম্পন্ন হওয়ার ফলে এটির একটি প্রভাব থাকতে পারে। নিম্নলিখিত রেজিস্ট্রি এন্ট্রি সহ আমার কাছে এক্সপি-এর জন্য অ্যান্টি-এলিয়জিং চালু আছে:

[এইচকেই_লোকাল_ম্যাচিন E সফটওয়্যার \ মাইক্রোসফ্ট \ আভালন.গ্রাফিক্স] "ম্যাক্সমল্টিসম্পালটাইপ" = শব্দভাণ্ডার: 00000004 "সক্ষমডিবগকন্ট্রোল" = শব্দ: 00000001

যাইহোক, এই সেটিংসটি দিয়ে এএ বন্ধ করার চিত্রগুলিতে কোনও প্রভাব নেই। আমি মনে করি এটি কেবল 3 ডি ভিউপোর্টগুলিকেই প্রভাবিত করে।

অবশেষে, আমি দেখতে পেলাম যে অস্পষ্টতা টেক্সটব্লকগুলির পাঠ্যের পাশাপাশি চিত্রগুলির সাথে ঘটে। এবং অস্পষ্টতা কেবল কিছু পাঠ্য ব্লক এবং চিত্রগুলির জন্য ঘটে, তাদের সকলেরই নয়।


3

আমি খুঁজে পেয়েছি যে প্রস্তাবিত ওয়ার্কআরউন্ডগুলির কোনও সংমিশ্রণ আমার আপাতদৃষ্টিতে এলোমেলো অস্পষ্ট চিত্রের সমস্যার নিরাময় করতে পারে না। আমি পছন্দ করি আরও অনেকে UseLayoutRenderingসম্পত্তি ব্যবহারের জন্য .net 4 এ আপগ্রেড করতে পারবেন না ।

আমি যা কাজ করতে পেয়েছি তা:

  • আপনার [মূল] চিত্রের মাত্রাগুলি 2 এর গুণক নিশ্চিত করুন এটি মজাদার চিত্রের স্কেলিংয়ের কিছু সমস্যা রোধ করে seems
  • কখনও কখনও আমি এটিও দেখেছি যে পিক্সেল বা 2 দ্বারা চিত্রগুলিতে মার্জিন সামঞ্জস্য করা সমস্যাটি রোধ করতে পারে।

1

আমার প্রথম চিন্তা, প্রশ্নটি পড়ে, আপনি কি ছবিটি খুব বেশি ফুটিয়ে তুলছিলেন, তবে অ্যাপটি আপনার যে চিত্রটি দেখছে তাতে তেমনটি দেখা যায় না।

দ্বিতীয় চিন্তাটি রঙ প্যালেট, তবে কালো রঙের একটি হিসাবে যেগুলি সঠিকভাবে রেন্ডারিং করছে না, এটি সম্ভবত সম্ভাবনা নয়।

আপনি যদি উপরের দুটিটি পুরোপুরি অস্বীকার করতে পারেন তবে আমি বর্তমানে স্টাম্পড।

পরীক্ষা হিসাবে, আপনি অন্যান্য গ্রাফিক্স ফর্ম্যাটগুলি চেষ্টা করতে পারেন, তবে পিএনজি ঠিক থাকতে হবে। আরও ভাল উত্তর নিয়ে আসতে আমি আরও কিছু মাধ্যমে এটি ভাবতে হবে।


1
অযৌক্তিক নেতিবাচক ভোটগুলি বন্ধ করার জন্য +1 যেহেতু আমি মনে করি আপনি কিছু যুক্তিসঙ্গত পরামর্শ দিয়েছেন এবং কেবল সহায়তা করার চেষ্টা করছেন এবং সবচেয়ে গুরুত্বপূর্ণ আপনার পরামর্শগুলিতে কোনও ভুল ছিল না।
jpierson

1

আমি রেন্ডারঅ্যাপশনগুলি ব্যবহার করার চেষ্টা করেছি it বিটম্যাপস্কেলিংমোড = হাই কোয়ালিটি, মনে হচ্ছে উইন্ডোজ ৮.১ এ কিছু সমস্যা দেখা দিয়েছে, তাই আমি যা করেছি সেগুলি PngOut.exe নামক সরঞ্জামটির মাধ্যমে চালানো ছিল

http://advsys.net/ken/utils.htm

যা পিএনজি-এর শিরোনাম হ্রাস করে, এবং আকারও হ্রাস করে তবে চিত্রের মান পরিবর্তন না করে।

এবং এখন আমার সমস্ত চিত্র নিখুঁত! :-)

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.