我试图在 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) 这里有人使用合金外观吗?我在抗锯齿和 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\nimport 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) 谁能帮我?我想弄清楚如何为这个 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% 缩放比例以用于交互式地图。缩小它会使边缘看起来锯齿状,但我只注意到对角线上的线条有这个问题......
有人能帮我解决这个问题吗?
谢谢一堆!
在 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) 是否可以对导出的 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)
出于我的目的,重要的是图像是 300dpi 的 PNG 或 TIFF(无损)。我知道我可以导出为矢量格式(SVG、PDF 等),然后使用另一个程序转换为 PNG/TIFF,但这显然是额外的工作。我很好奇 R 中是否有任何我忽略的解决方案。
作为参考,以上是photoshop的渲染质量。PNG Arial 14pt。
我试图用 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) 我正在使用 Unity,并且有一个“屏幕空间 - 覆盖”画布,它具有可旋转的图像对象。问题是,在浅旋转时,图像具有非常明显的锯齿状边缘。我找不到任何内置的抗锯齿解决方案可以解决此问题。
我知道设置中的 MSAA 不适用于叠加画布,Post Effects 包中的抗锯齿也不适用于。
我无法更改为“屏幕空间 - 相机”画布,我知道这将应用 MSAA,但它会以太多其他方式破坏我的游戏(我的游戏即将完成,我在最后添加了 AA,这可能是一个失误)。
有没有办法让 AA 在覆盖画布上工作?
我ImageView在 JavaFX 中制作了一个并将像素艺术加载到其中。我放大了,但我无法清楚地看到艺术的像素。问题应该出在抗锯齿上。所以我需要清楚地看到第二个链接上的像素。如何关闭抗锯齿功能?
我尝试过img1.setSmooth(false);
我在 JavaFX 中做了什么: 
它应该是什么样子:
//在 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) 我正在尝试创建一个看起来像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) 在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中获得平滑的旋转三角形?摆脱中间的发际线将是一个加号。