【发布时间】:2011-04-07 08:59:31
【问题描述】:
好的,我创建了一个具有透明度的 PNG-24。它基本上是一个灰度图像,在黑色和透明之间使用“颜色”而不是黑白。我这样做是为了可以将其用作彩色矩形的不透明度蒙版,从而仅使用单个图形以我想要的任何颜色渲染图像。
但是,就我的一生而言,我无法让 WPF 停止对 da*n 图像进行抗锯齿!!
我已在应用画笔的矩形上设置“SnapesToDevicePixels”...我已将 ImageBrush 的 Scale 设置为“None”...我已将其 ViewPort 和 ViewBox 设置为绝对单位和大小它们与源图像完全一致。但无论我怎么尝试,WPF 仍然坚持试图让事情变得顺畅!这太令人沮丧了!!!
所以...有人知道如何使用图像作为不透明蒙版,但不会丢失我们所做的像素精确绘图吗?我只是想让 WPF 在我们绘制它时渲染该死的东西,句号!
【问题讨论】:
-
请发布您的代码,根据经验,房间里可能有一头大象,您看不到,其他人会在他们看到您的代码的那一刻发现,否则您可能会在这里转圈.
-
@MarquelV:那你认为这个问题在对象树中不会更高?
-
这是一行代码...一个简单的 ImageBrush 设置为具有实心填充的矩形的不透明度蒙版。 (好吧......如果你也包括矩形,两个。)任何地方都没有大象。画质也不错。我已经在几个程序中打开它,并使用屏幕放大镜来确保我没有在 Photoshop 中吐出一些东西。没关系。但是 WPF 仍在“增强”我故意锯齿状图像的边缘,但仅在用作画笔时。我也没有看到任何可以在画笔上设置的与像素对齐相关的内容。
-
对不起...我通过剪切复制对其进行了编辑,但它把它弄乱了。至于视觉树......再次......它只是一个矩形和一个图像画笔。那是我的测试窗口的根控制。当我删除不透明蒙版时,矩形与我正在使用的图像大小相同的像素固定(因为我将其设置为 SnapsToDevicePixels 并将其水平和垂直对齐设置为左上角)所以我知道它也不是.添加不透明蒙版、BAM...抗锯齿蒙版。
-
you 可以给我看一个你知道有效的例子吗?创建仅使用黑色和透明的菱形图像(例如 16x16)。没有其他的。将其加载到您已将 Viewport 和 ViewBox 设置为 0,0,16,16 和绝对单位的图像刷中,并且 TileMode 为 None 和 Stretch 也没有...将其设置为矩形的 OpacityMask使用 SnapsToDevicePixels 设置为 16x16,你仍然会得到该死的图像抗锯齿。
标签: wpf antialiasing imagebrush opacitymask snapstodevicepixels