Saya menggunakan beberapa Gambar di aplikasi WPF saya.
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" />
Tapi, mereka tampak kabur.
Mengapa SnapsToDevicePixels="True"
garis itu tidak mencegah masalah ini?
Jawaban:
Anda mungkin ingin mempertimbangkan untuk mencoba properti baru yang tersedia sekarang di WPF4 . Serahkan
RenderOptions.BitmapScalingMode
ke HighQuality atau jangan menyatakannya.NearestNeighbor bekerja untuk saya kecuali itu menyebabkan bitmap jaggy ketika memperbesar aplikasi. Tampaknya juga tidak memperbaiki gangguan di mana ikon mengukur dengan cara yang aneh.
Pada elemen root Anda (yaitu jendela utama Anda) menambahkan properti ini:
UseLayoutRounding="True"
.Properti yang sebelumnya hanya tersedia di Silverlight sekarang telah memperbaiki semua masalah ukuran Bitmap. :)
sumber
Daripada menggunakan
SnapsToDevicePixels
, saya malah menggunakanRenderOptions.BitmapScalingMode
dan sekarang bagus dan segar!XAML:
sumber
+1 untuk Zack Peterson
Saya menggunakan. Net 3.5 sp1 dan sepertinya solusi paling sederhana untuk sejumlah besar gambar fuzzy. Bukan masalah besar untuk menentukan RenderOptions di tempat, tetapi untuk komponen pihak ketiga gaya dalam sumber daya tingkat aplikasi masuk akal:
Bekerja dengan baik ketika AvalonDock mulai membuat ikon buram.
sumber
Menggunakan
UseLayoutRounding="True"
pada root Window berfungsi dalam banyak kasus tapi saya mengalami masalah ketika menggunakan kontrol WPF Ribbon . Aplikasi saya bergantung pada Kontekstual Tabs yang muncul sesuai dengan apa yang user lakukan dan ketika saya mengaturUseLayoutRounding
untukTrue
, tab kontekstual tidak akan muncul dan gambar RibbonButton ini tidak. Juga, aplikasi macet selama beberapa detik dan kipas CPU mulai bernyanyi.Menggunakan
RenderOptions.BitmapScalingMode="NearestNeighbor"
pada gambar saya memperbaiki masalah rendering gambar (gambar kabur dan terpotong) dan sepenuhnya kompatibel dengan penggunaan Ribbon Contextual Tabs.sumber
RenderOptions.BitmapScalingMode = "NearestNeighbor" hampir selalu berfungsi dengan baik. Namun, kadang-kadang Anda akan mendapatkan gangguan grafis (dalam kasus saya, 4 dari 5 gambar muncul dengan baik, tetapi yang kelima memiliki sedikit distorsi di tepi kanan). Saya memperbaikinya saya meningkatkan margin kanan kontrol gambar dengan 1.
Jika itu masih belum memperbaikinya, coba kontrol kelas Bitmap di atas yang disebutkan EugeneZ. Ini adalah pengganti untuk kontrol Gambar dan sejauh ini bekerja dengan cukup baik untuk saya. Lihat http://blogs.msdn.com/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx
sumber
Pastikan Anda menyimpan gambar dalam DPI yang sama dengan aplikasi WPF Anda bekerja, beberapa format gambar menyimpan info ini sebagai metadata. Saya tidak tahu apakah ini menyelesaikan masalah, tetapi saya memiliki beberapa masalah karena ini di mana ukuran gambar hingga 100% menjadi lebih besar atau lebih kecil dari yang diharapkan.
Mungkin sesuatu yang serupa.
sumber
use UseLayoutRounding = Sesuai dengan elemen paling atas dalam aplikasi Anda
sumber
Saya percaya ini adalah bug (atau setidaknya itu). Lihat halaman pertukaran email dukungan Microsoft ini untuk beberapa ide untuk memperbaikinya.
sumber
Saya telah menemukan bahwa RenderOptions.BitmapScalingMode = "NearestNeighbor" tidak berfungsi untuk saya. Saya menggunakan Windows XP x32 dengan DirectX 9.0c. Karena rendering aktual untuk WPF dilakukan dengan DirectX, ini bisa berpengaruh. Saya sudah mengaktifkan anti-aliasing untuk XP dengan entri registri berikut:
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Avalon.Graphics] "MaxMultisampleType" = dword: 00000004 "EnableDebugControl" = dword: 00000001
Namun, mematikannya dengan pengaturan ini tidak berpengaruh pada gambar. Saya pikir ini hanya efek 3D Viewports.
Akhirnya, saya menemukan bahwa pengaburan terjadi dengan teks TextBlocks serta gambar. Dan pengaburan hanya terjadi pada beberapa blok teks dan gambar, tidak semuanya.
sumber
Saya telah menemukan bahwa tidak ada kombinasi dari solusi yang disarankan yang dapat menyembuhkan masalah gambar saya yang tampak acak. Saya suka banyak orang lain tidak dapat memutakhirkan ke .net 4 untuk menggunakan
UseLayoutRendering
properti.Apa yang saya temukan berhasil:
sumber
Pikiran pertama saya, membaca pertanyaan, adalah Anda terlalu banyak meledakkan gambar, tetapi tampaknya tidak demikian halnya dengan melihat gambar yang Anda miliki dari aplikasi tersebut.
Pikiran kedua adalah palet warna, tetapi dengan warna hitam sebagai salah satu warna yang tidak ditampilkan dengan benar, ini tidak mungkin.
Jika Anda dapat sepenuhnya mengesampingkan dua di atas, saya saat ini bingung.
Sebagai percobaan, Anda dapat mencoba format grafis lain, tetapi PNG seharusnya baik-baik saja. Saya harus memikirkannya lagi untuk mendapatkan jawaban yang lebih baik.
sumber
Saya sudah mencoba menggunakan RenderOptions.BitmapScalingMode = HighQuality, sepertinya menyebabkan beberapa masalah di Windows 8.1, jadi yang saya lakukan adalah menjalankannya melalui alat yang disebut PngOut.exe
http://advsys.net/ken/utils.htm
Yang mengurangi header png, dan juga mengurangi ukuran, tetapi tanpa mengubah kualitas gambar.
Dan sekarang semua gambar saya sempurna! :-)
sumber