내 이미지가 흐릿해요!WPF의 SnapToDevicePixels가 작동하지 않는 이유는 무엇입니까?
WPF 응용 프로그램에서 일부 이미지를 사용하고 있습니다.
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"
라인은 이 문제를 방지합니까?
현재 WPF4에서 사용할 수 있는 새 속성을 사용해 보는 것이 좋습니다.그대로 둡니다.RenderOptions.BitmapScalingMode
고품질로 보내거나 선언하지 마십시오.
NeighestNeighbor는 애플리케이션을 확대할 때 Jaggy 비트맵으로 이어진 것을 제외하고는 저를 위해 작동했습니다.또한 아이콘 크기가 이상한 방식으로 조정되는 결함을 해결하지 못한 것으로 보입니다.
요소주 창에 다음합니다.UseLayoutRounding="True"
.
이전에는 Silverlight에서만 사용할 수 있던 속성이 이제 모든 비트맵 크기 조정 문제를 해결했습니다.:)
사용하기 보다는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
사용하고 있습니다.Net 3.5 sp1 그리고 그것은 많은 수의 퍼지 이미지를 위한 가장 간단한 해결책처럼 보입니다.RenderOptions를 지정하는 것은 큰 문제가 아니지만, 타사 구성 요소의 경우 앱 레벨 리소스의 스타일은 다음과 같습니다.
<Style TargetType="{x:Type Image}">
<Setter
Property="RenderOptions.BitmapScalingMode"
Value="NearestNeighbor" />
</Style>
아발론 독이 흐릿한 아이콘을 렌더링하기 시작했을 때 잘 작동했습니다.
UseLayoutRounding="True"
대부분의 경우 루트 창에서 작동하지만 WPF 리본 컨트롤을 사용할 때 문제가 발생했습니다.내 응용프로그램은 사용자가 수행 중인 작업과 사용자가 설정한 시간에 따라 나타나는 상황별 탭에 의존합니다.UseLayoutRounding
True
상황별 탭이 표시되지 않고 리본 단추의 이미지도 표시되지 않습니다.또한 애플리케이션이 몇 초 동안 중지되고 CPU 팬이 노래하기 시작합니다.
용사를 합니다.RenderOptions.BitmapScalingMode="NearestNeighbor"
이미지에서 이미지 렌더링 문제(퍼지 및 잘라낸 이미지)를 수정했으며 리본 상황별 탭 사용과 완벽하게 호환됩니다.
렌더 옵션.BitmapScalingMode="Nearest Neighbor"는 대부분 잘 작동합니다.하지만 가끔 그래픽 결함이 발생할 수 있습니다(나의 경우 5개 중 4개는 정상적으로 표시되지만 5개는 오른쪽 가장자리가 약간 변형되었습니다).이미지 컨트롤의 오른쪽 여백을 1만큼 늘려서 수정했습니다.
그래도 해결되지 않으면 EugeneZ가 언급한 위의 비트맵 클래스 컨트롤을 사용해 보십시오.이것은 이미지 컨트롤을 대체하는 것으로 지금까지 저에게 꽤 잘 작동했습니다.http://blogs.msdn.com/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx 을 참조하십시오.
반올림= 배치 사용응용프로그램의 최상위 요소에 충실합니다.
WPF 응용 프로그램이 작동하는 것과 동일한 DPI에 이미지를 저장해야 합니다. 일부 이미지 형식에서는 이 정보가 메타데이터로 저장됩니다.이것이 문제를 해결할 수 있을지 모르겠지만 100% 크기의 이미지가 예상보다 크거나 작아지는 문제가 있었습니다.
비슷한 것일 수도 있습니다.
저는 이것이 버그라고 믿습니다.이 문제를 해결하기 위한 몇 가지 아이디어는 이 Microsoft 지원 전자 메일 지원 교환 페이지를 확인하십시오.
렌더 옵션을 찾았습니다.BitmapScalingMode="NearestNeighbor"가 작동하지 않습니다.DirectX 9.0c가 설치된 Windows XP x32를 사용하고 있습니다.WPF의 실제 렌더링은 DirectX로 수행되므로 영향을 미칠 수 있습니다.XP에 대해 다음 레지스트리 항목을 사용하여 안티에일리어스를 설정했습니다.
[HKEY_LOCAL_MACHINE\소프트웨어\Microsoft\]Avalon.Graphics] "MaxMultisampleType"=dword:00000004 "DebugControl 활성화"=dword:00000001
그러나 이러한 설정을 사용하여 aa를 해제해도 이미지에는 영향을 주지 않습니다.저는 이것이 3D View 포트에만 영향을 준다고 생각합니다.
마지막으로 이미지뿐만 아니라 텍스트 블록의 텍스트에서도 흐림이 발생한다는 것을 알게 되었습니다.그리고 흐림 현상은 일부 텍스트 블록과 이미지에만 발생하며, 모두 발생하는 것은 아닙니다.
제안된 해결 방법을 조합해도 무작위로 보이는 흐릿한 이미지 문제를 해결할 수 없다는 것을(를) 발견했습니다.나는 많은 다른 사람들이 사용하기 위해 .net 4로 업그레이드할 수 없는 것을 좋아합니다.UseLayoutRendering
소유물.
작동하는 것을 발견:
- [원본] 이미지 치수가 2의 배수인지 확인합니다.이렇게 하면 일부 펑키한 이미지 스케일링 문제를 방지할 수 있습니다.
- 때때로 저는 이미지의 여백을 픽셀 또는 2로 조정하면 문제를 방지할 수 있다는 것을 발견했습니다.
질문을 읽으며 처음 생각한 것은 당신이 이미지를 너무 부풀리고 있다는 것이었지만, 앱의 이미지를 보면 그렇지 않은 것 같습니다.
두 번째 생각은 색상 팔레트입니다. 하지만 검은색이 제대로 렌더링되지 않는 색상 중 하나이기 때문에, 이것은 가능성이 낮습니다.
만약 당신이 위의 두 가지를 완전히 배제할 수 있다면, 저는 현재 당황스럽습니다.
실험적으로, 당신은 다른 그래픽 포맷을 시도할 수 있지만, PNG는 괜찮을 것입니다.좀 더 생각해봐야 더 좋은 답을 찾을 수 있을 것 같습니다.
렌더 옵션을 사용하려고 했습니다.BitmapScalingMode=HighQuality는 Windows 8.1에서 몇 가지 문제를 일으키는 것 같습니다. 그래서 제가 한 일은 PngOut.exe라는 도구를 통해 문제를 실행하는 것이었습니다.
http://advsys.net/ken/utils.htm
그러면 png의 헤더가 감소하고 크기도 감소하지만 이미지 품질은 변경되지 않습니다.
그리고 이제 내 모든 이미지는 완벽합니다! :-)
언급URL : https://stackoverflow.com/questions/592017/my-images-are-blurry-why-isnt-wpfs-snapstodevicepixels-working
'programing' 카테고리의 다른 글
지점 이름 내에서 사용할 수 없는 문자는 무엇입니까? (0) | 2023.05.03 |
---|---|
깃허브 같은 깃서버? (0) | 2023.05.03 |
PowerShell에서 사용자 입력 확인 (0) | 2023.04.28 |
스크롤 뷰어의 하위 요소가 마우스 휠로 스크롤하지 못하게 합니까? (0) | 2023.04.28 |
프로그래밍 방식으로 탐색 제목 변경 (0) | 2023.04.28 |