标签: antialiasing

别名资源 (WPF)

我试图在 XAML 中为资源添加别名,如下所示:

<UserControl.Resources>

    <StaticResourceExtension x:Key="newName" ResourceKey="oldName"/>

</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

oldName仅指类型为 的资源Image,在 中定义App.xaml

据我了解,这是执行此操作的正确方法,并且应该可以正常工作。然而,XAML 代码给了我一个非常无用的错误:

"The application XAML file failed to load. Fix errors in the application XAML before opening other XAML files."
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停StaticResourceExtension在代码中的行(具有波浪形下划线)上时,会出现此情况。实际错误列表中还会生成其他几个错误,但似乎相当无关紧要且无意义(例如“当前上下文中不存在名称“InitializeComponent””之类的消息),因为删除该行后它们都会消失。

我完全被难住了。为什么 WPF 会抱怨这段代码?关于解决方案有什么想法吗?

注意:我在 .NET 3.5 SP1 中使用 WPF。

更新 1:
我应该澄清我确实收到了编译器错误(错误列表中的上述消息),所以这不仅仅是设计者的问题。

更新2:
这是完整的相关代码...

在 App.xaml 中(在 下Application.Resource):

<Image x:Key="bulletArrowUp" Source="Images/Icons/bullet_arrow_up.png" Stretch="None"/>
<Image x:Key="bulletArrowDown" Source="Images/Icons/bullet_arrow_down.png" Stretch="None"/>
Run Code Online (Sandbox Code Playgroud)

在 MyUserControl.xaml 中(在 下UserControl.Resources):

<StaticResourceExtension x:Key="columnHeaderSortUpImage" ResourceKey="bulletArrowUp"/>
<StaticResourceExtension x:Key="columnHeaderSortDownImage" …
Run Code Online (Sandbox Code Playgroud)

wpf resources xaml antialiasing

5
推荐指数
1
解决办法
2670
查看次数

合金外观和抗锯齿

这里有人使用合金外观吗?我在抗锯齿和 JTextComponents 方面遇到了一个奇怪的错误。Alloy 默认情况下根本不使用抗锯齿功能,因此我必须通过创建自己的 UI 类来强制使用它。这在大多数情况下都可以正常工作,但某些字符会对抗锯齿造成严重破坏。

\n\n

例如,如果合金设置为外观,并且我将一些希伯来语文本插入到 JTextComponent 中,例如:\xd7\xa9\xd7\x9c\xd7\x95\xd7\x9d、\xd7\x9e\xd7\ x94 \xd7\xa9\xd7\x9c\xd7\x95\xd7\x9e\xd7\x9a \xd7\xa9\xd7\x9e\xd7\x99 \xd7\x94\xd7\x95\xd7\x90 \xd7\x94\ xd7\x90\xd7\xa7\xd7\x96\xd7\x99\xd7\x93\',整个 JTextComponent 突然永久失去抗锯齿功能。

\n\n

奇怪的是,我什至没有扩展 AlloyTextPaneUI,而是扩展 BasicTextPaneUI 来进行抗锯齿,所以我很困惑合金在哪里出现(其他外观和感觉似乎工作得很好)。

\n\n

我很难追踪这个错误...有人遇到过同样的问题吗?

\n\n

这是一个演示该问题的简短示例:

\n\n
import com.incors.plaf.alloy.AlloyLookAndFeel;\nimport com.incors.plaf.alloy.themes.glass.GlassTheme;\n\nimport javax.swing.*;\nimport javax.swing.plaf.ComponentUI;\nimport javax.swing.plaf.basic.BasicTextPaneUI;\nimport javax.swing.text.BadLocationException;\nimport javax.swing.text.StyledDocument;\nimport java.awt.*;\n\npublic class Scrap {\n\n    static {\n        // NOTE: You need a license code for Alloy!\n        AlloyLookAndFeel.setProperty("alloy.licenseCode", "your license here");\n\n        UIManager.put("TextPaneUI", MyTextPaneUI.class.getName());\n\n        try {\n            UIManager.setLookAndFeel(new AlloyLookAndFeel(new GlassTheme()));\n        } catch (UnsupportedLookAndFeelException e) {\n            e.printStackTrace();\n        }\n\n        // With system Look and Feel everything works just fine...\n//      try …
Run Code Online (Sandbox Code Playgroud)

java swing jtextpane antialiasing look-and-feel

5
推荐指数
1
解决办法
1246
查看次数

如何平滑SVG路径的边缘

谁能帮我?我想弄清楚如何为这个 SVG 路径(目前用 Raphael 绘制它)获得漂亮、平滑的边缘。这是问题的 CodePen 模型(您可能需要向下滚动才能看到窗口中的对角线 - 它与顶部有点偏移)。

http://codepen.io/anon/pen/qbxYOg

<DOCTYPE html>
<body>
<div style="width:3484px; height:2000px;">
    <svg style="width:100%; height:100%;">
            <path fill="#fe0000" stroke="#fe0000" d="M606.182,649.872L739.73,670.2349999999999M743.215,670.366C742.902,669.307,741.7900000000001,668.702,740.73,669.015C739.6700000000001,669.33,739.066,670.442,739.38,671.501C739.694,672.5609999999999,740.806,673.165,741.865,672.851C742.925,672.538,743.53,671.425,743.215,670.366ZM594.333,649L463.09799999999996,628.047M459.614,627.881C459.917,628.943,461.02299999999997,629.559,462.085,629.256C463.14799999999997,628.953,463.763,627.845,463.46,626.784C463.156,625.721,462.04999999999995,625.106,460.988,625.409C459.927,625.713,459.311,626.819,459.614,627.881Z" style="transform: scale(.75); fill: red; stroke: red; stroke-width: 4px"></path>
        </svg>
    </div>
</body>
</html>  
Run Code Online (Sandbox Code Playgroud)

基本上问题是线条看起来很锯齿,没有平滑/抗锯齿,我需要能够将这个 SVG 路径从 100% 缩放比例缩放到 50% 缩放比例以用于交互式地图。缩小它会使边缘看起来锯齿状,但我只注意到对角线上的线条有这个问题......

有人能帮我解决这个问题吗?

谢谢一堆!

html svg antialiasing

5
推荐指数
1
解决办法
2917
查看次数

如何在 BufferedImage 上使用具有抗锯齿功能的 Graphics2D.drawline?

线条粗犷流畅

在 a 上绘图时JPanel,我可以将抗锯齿设置为渲染提示,然后绘制一条具有平滑边缘的线条。

但是,如果我创建一个BufferedImage并使用抗锯齿在其上绘制同一条线,然后我使用它JPanel.drawImage来绘制缓冲图像,则该线会被粗略地淹没(例如,抗锯齿=关闭)。

我无法确定如何在具有抗锯齿功能的缓冲图像上绘制线条。有人可以澄清这是如何完成的吗?

在下面的示例中,我只是创建了两个JFrame. 在一个框架中,我创建了一个面板并直接在其上绘制。在另一帧中,我创建了一个面板,然后是我在其上绘制的缓冲图像,然后用于JPanel.drawImage显示。我希望使用抗锯齿绘制缓冲图像中显示的线条。

import java.awt.BasicStroke;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.image.BufferedImage;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Test {
    public static void main(String[] args){
        doDirect();
        doBuffered();
    }
    public static void doBuffered(){
        JFrame frame = new JFrame();
        frame.setTitle("BufferedImage drawn with antialiasing on");
        frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        JPanel canvas = new JPanel(){
            @Override
            protected void paintComponent(Graphics g){
                BufferedImage image = new BufferedImage(100, …
Run Code Online (Sandbox Code Playgroud)

java swing antialiasing graphics2d

5
推荐指数
1
解决办法
2753
查看次数

ggplot 导出的抗锯齿

是否可以对导出的 ggplot 图进行精细的抗锯齿处理?我已经尝试过这个Cairo包以及一些不同的设备,但它们似乎都有锯齿状的边缘。

library(ggplot2)
library(Cairo)

p <- ggplot(data.frame(x=1:5,y=1:5),aes(x=x,y=y))+
  geom_text(aes(2.5,2.5),label="Brown Fox bla bla..",size=5)+
  labs(x=NULL,y=NULL)+
  theme_bw()+
  theme(plot.background=element_blank(),
        plot.margin = margin(c(0,0,0,0)),
        axis.title = element_blank(),
        axis.text = element_blank(),
        axis.ticks = element_blank(),
        axis.line = element_blank(),
        panel.grid = element_blank(),
        panel.border = element_blank(),
        panel.background = element_blank())

png("test-nocairo.png",height=2,width=6,units="cm",res=300)
print(p)
dev.off()

png("test-cairo.png",height=2,width=6,units="cm",res=300,type="cairo")
print(p)
dev.off()

tiff("test-cairo.tiff",height=2,width=6,units="cm",res=300,type="cairo")
print(p)
dev.off()

ggsave("test-ggsave.png",height=2,width=6,units="cm",dpi=300,type="cairo")
Run Code Online (Sandbox Code Playgroud)

png-nocairo PNG 没有开罗

png-开罗 PNG 开罗

蒂夫开罗 TIFF开罗

png-ggsave-开罗 PNG ggsave 开罗

出于我的目的,重要的是图像是 300dpi 的 PNG 或 TIFF(无损)。我知道我可以导出为矢量格式(SVG、PDF 等),然后使用另一个程序转换为 PNG/TIFF,但这显然是额外的工作。我很好奇 R 中是否有任何我忽略的解决方案。

照相馆

作为参考,以上是photoshop的渲染质量。PNG Arial 14pt。

r antialiasing ggplot2

5
推荐指数
1
解决办法
2332
查看次数

iOS Metal:Jaggies 抗锯齿

我试图用 renderEncoder 的 drawIndexedPrimitives 画一个半圆

[renderEncoder setVertexBuffer:self.vertexBuffer offset:0 atIndex:0];

[renderEncoder drawIndexedPrimitives:MTLPrimitiveTypeTriangleStrip
                              indexCount:self.indexCount
                               indexType:MTLIndexTypeUInt16
                             indexBuffer:self.indicesBuffer
                       indexBufferOffset:0];
Run Code Online (Sandbox Code Playgroud)

其中圆的 vertexBuffer 和 IndexBuffer 是通过计算创建的

int segments = 10;


float vertices02[ (segments +1)* (3+4)];
vertices02[0] = centerX;
vertices02[1] = centerY;
vertices02[2] = 0;

//3, 4, 5, 6 are RGBA
vertices02[3] = 1.0;
vertices02[4] = 0;
vertices02[5] = 0.0;
vertices02[6] = 1.0;    

uint16_t indices[(segments -1)*3];

for (int i = 1; i <= segments ; i++){
    float degree = (i -1) * (endDegree - startDegree)/ (segments -1) …
Run Code Online (Sandbox Code Playgroud)

opengl-es objective-c antialiasing ios metal

5
推荐指数
1
解决办法
1285
查看次数

Unity:有什么方法可以在屏幕空间 - 覆盖画布上实现抗锯齿吗?

我正在使用 Unity,并且有一个“屏幕空间 - 覆盖”画布,它具有可旋转的图像对象。问题是,在浅旋转时,图像具有非常明显的锯齿状边缘。我找不到任何内置的抗锯齿解决方案可以解决此问题。

在此输入图像描述

我知道设置中的 MSAA 不适用于叠加画布,Post Effects 包中的抗锯齿也不适用于。

我无法更改为“屏幕空间 - 相机”画布,我知道这将应用 MSAA,但它会以太多其他方式破坏我的游戏(我的游戏即将完成,我在最后添加了 AA,这可能是一个失误)。

有没有办法让 AA 在覆盖画布上工作?

canvas antialiasing unity-game-engine

5
推荐指数
1
解决办法
5516
查看次数

在 JavaFX 中禁用 ImageView 抗锯齿功能

ImageView在 JavaFX 中制作了一个并将像素艺术加载到其中。我放大了,但我无法清楚地看到艺术的像素。问题应该出在抗锯齿上。所以我需要清楚地看到第二个链接上的像素。如何关闭抗锯齿功能?

我尝试过img1.setSmooth(false);

我在 JavaFX 中做了什么: 图片1

它应该是什么样子: 图片2 //在 piskel 中预览

这是我的代码:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;

public class Main extends Application {
@Override public void start(Stage primaryStage) {
    AnchorPane root = new AnchorPane();
    StackPane hb = new StackPane();
    Image image = new Image("pixelart.png");
    ImageView img = new ImageView(image);
    img.setFitWidth(500);
    img.setFitHeight(500);
    img.setSmooth(false);
    hb.getChildren().add(img);
    root.getChildren().addAll(hb);
    Scene scene = new Scene(root,800,400);
    primaryStage.setScene(scene);
    primaryStage.show();    
}
public static void main(String[] args) {launch(args);} …
Run Code Online (Sandbox Code Playgroud)

java javafx image-processing antialiasing

5
推荐指数
1
解决办法
790
查看次数

为什么我的石英弧显示比直线更粗?

我正在尝试创建一个看起来像UIButtonTypeRoundedRect的自定义UIButton.在我的drawRect:中,我创建了一个路径,第一次调用CGContextMoveToPoint(),然后四次调用CGContextAddArc().然后我走了一条路.但是,在得到的图像中,四个圆角明显比路径的其余部分厚.

我怀疑这与抗锯齿有关,所以我尝试用CGContextSetShouldAntiAlias()将其关闭,但后来看起来更糟.我也尝试过测试线宽,但弧线总是比直线厚.Apple的UIButtonTypeRoundedRect看起来非常好,因此必须以某种方式解决.有人有线索吗?

编辑:相关代码:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextBeginPath(context);

CGContextMoveToPoint(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, 3 * M_PI_2, 0, NO);
CGContextAddArc(context, rect.origin.x + rect.size.width - kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, 0, M_PI_2, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + rect.size.height - kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI_2, M_PI, NO);
CGContextAddArc(context, rect.origin.x + kRoundedRectButtonRadius, rect.origin.y + kRoundedRectButtonRadius, kRoundedRectButtonRadius, M_PI, 3 * M_PI_2, NO);

CGContextClosePath(context);
CGContextSetLineWidth(context, 1.7);
CGContextStrokePath(context);
Run Code Online (Sandbox Code Playgroud)

iphone core-graphics objective-c antialiasing

4
推荐指数
1
解决办法
952
查看次数

Firefox中CSS形状的抗锯齿

在Firefox中,三角形是否具有锯齿状/锯齿状的边缘(无论是否旋转)。

参见小提琴

CSS(html只是<div></div>

div {
    border-top: 10px solid rgba(255, 255, 255, 0);
    border-right: 70px solid #777;
    border-bottom: 10px solid rgba(255, 255, 255, 0);
    transform: rotate(90deg);
}
Run Code Online (Sandbox Code Playgroud)

对于填充其框的形状,可以应用outline: 1px solid transparent

对于未旋转的形状,您可以简单地应用transform: scale(.999)位于SO上)。

但是,如果我将CSS的最后一行更改为transform: rotate(90deg) scale(.999),仍然会出现别名。

早在12年就提交并仍标记为“新”的错误,在某种程度上是相关的,并且尚未尝试解决。

是否有其他解决方法可在Firefox中获得平滑的旋转三角形?摆脱中间的发际线将是一个加号。

css geometry antialiasing css-transforms css-shapes

4
推荐指数
1
解决办法
3904
查看次数