ডাব্লুপিএফ: কীভাবে কোনও চিত্রটিকে তার আসল আকারে প্রদর্শিত হয়?


98

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

আমার কোডটি এখানে:

<Button HorizontalAlignment="Left" Grid.Column="1" Grid.Row="5" Margin="0,5">
        <Button.Content>
            <StackPanel Orientation="Horizontal" Margin="10,0">
                <Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" Width="24" Height="24" />
                <TextBlock Text="添加" />
            </StackPanel>
        </Button.Content>
    </Button>

আমার কাছে আসল আকার 32 * 32 সহ একটি চিত্র রয়েছে, তবে আমি যখন উপরের কোডটি চালিয়েছি তখন চিত্রটি আসল আকারের বাইরে সমস্ত স্থান পূরণ করতে প্রসারিত করবে। আমি "স্ট্রেচ" সম্পত্তিটি "কিছুই নয়" তে সেট করেছিলাম, তবে মনে হয় এটি কার্যকর হয় না।

সুতরাং, আমি কীভাবে এই সমস্যাটি সমাধান করতে পারি? ধন্যবাদ!

উত্তর:


126

এখানে একটি অনুরূপ প্রশ্ন। সাধারণত সেটিংসই Stretch="None"যথেষ্ট।

মেডিটাটাতে ডিপিআইয়ের চিত্রটি কী রয়েছে তাও খুব গুরুত্বপূর্ণ। চিত্রটির ডিপিআই যদি মনিটরের ডিপিআই (সাধারণত 96) থেকে আলাদা হয় তবে ডাব্লুপিএফ স্বয়ংক্রিয়ভাবে চিত্রটির আকার পরিবর্তন করবে, কারণ এটি ডিপিআই-স্বতন্ত্র হওয়ার চেষ্টা করে


সম্পাদনা

এমএসডিএন লিঙ্কটি নষ্ট হয়েছে, এখানে নতুন লিঙ্কটি রয়েছে: এমএসডিএন ব্লগ - অস্পষ্ট বিটম্যাপস । পুরানো লিঙ্কটি আর্কাইভ.অর্গের জন্য ব্যবহার করার জন্য রাখুন, যদি নতুন লিঙ্কটি কাজ করা বন্ধ করে দেয়।


10
ডিপিআই সেটিংস, পাজা সম্পর্কিত দুর্দান্ত টিপ। আমার বেশ কয়েকটি সরঞ্জামদণ্ডের আইকনগুলি 72 ডিপিআইতে সেট করা হয়েছিল, যার ফলে পিক্সেলের মাত্রা 16x16 হওয়া সত্ত্বেও সেগুলি বড় আকারের দেখা দেয়।
dthrasher

আমি বুঝতে পারছি না। আপনি কি বলছেন যে ডাব্লুপিএফ স্ক্রিনের রেজোলিউশনের উপর নির্ভর করে আপনার উইন্ডোটিকে আলাদাভাবে বিন্যাস করবে? সম্ভবত কোনও ভাল জিনিস হতে পারে এমন কোনও উপায় নেই।
কাইল ডেলানিকে

@ কাইলডেলানী উত্তরটিতে লিঙ্কিত নিবন্ধটি পড়েছেন?
পায়া

4
@ কাইলডেলানি হ্যাঁ, এ কারণেই আপনি ডাব্লুপিএফ-তে আকার, দূরত্ব, মার্জিন ইত্যাদি নির্দিষ্ট করতে "পিক্সেল" এর পরিবর্তে "পয়েন্ট" ব্যবহার করেন।
পায়া

4
@ PawełAudionysos আমি ভাঙা লিঙ্ক সমাধান করেছেন
Paya

7

প্রস্থ বা উচ্চতা উল্লেখ না করে চেষ্টা করুন, পরিবর্তে এটি ব্যবহার করুন:

<Image Source="/images/user_add.png" Stretch="None" HorizontalAlignment="Center" VerticalAlignment="Center" />

7
<Image Source="Images/Background.png" UseLayoutRounding="True" SnapsToDevicePixels="True" Width="600" Height="800" Stretch="Fill" />

এই এক আমার জন্য কাজ করে, সঙ্গে একটি চিত্রের জন্য 600x800 pixelsএবং 96dpi

@ রিশাদ ২ মি 8 যদি আকারটি অজানা থাকে তবে https://msdn.microsoft.com/en-us/library/system.drawing.image.size(v=vs.110).aspx দিয়ে আকারটি সনাক্ত করতে পারে I'd


4
ছবির আকার অজানা থাকলে কী হবে?
রিসাদ

তুমি একজন ত্রাণকর্তা। আপনি জানতে চাইবেন না যে আমি কতদিন এই সমস্যাটি নিয়ে যন্ত্রণাদায়ক ছিলাম।
ডেভিড অ্যাটকিনসন

4
UseLayoutRounding সেট সত্য আমার জন্য! ধন্যবাদ!
ব্লেক থিংস্ট্যাড

4

Paya এর উত্তর যোগ করার পদ্ধতি: ক্ষতিপূরণ WPFমনিটর রেজল্যুশন আপনি সেট করতে সক্ষম হওয়া উচিত মানিয়ে নিতে এর প্রয়াস Widthএবং Heightফাইলের মূল মাত্রা এবং ব্যবহার করা Stretch="Fill"। এটি আমার পক্ষে কাজ করেছে।


0

আপনি যদি মূল আকারের সাথে চিত্রটি প্রদর্শন করতে চান তবে চিত্রের আকারটি জানেন না তবে আমি মনে করি সর্বোত্তম উপায় হ'ল চিত্রটি ইউআইইলেটের পটভূমি হিসাবে সেট করা। এটার মত:

    <Button>
        <Button.Background>
            <ImageBrush ImageSource="/images/user_add.png" Stretch="None"/>
        </Button.Background>
    </Button>
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.