- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 WPF 应用程序中绘制图形,但使用 drawingContext.DrawLine(...)
绘制的线被绘制到子像素边界。
我可以通过创建 Line
对象让它们看起来不错,但我不想在每次视觉对象失效时都创建数以万计的对象。
我怎样才能强制它们适应像素?
最佳答案
您可以将线条绘制到具有 protected VisualEdgeMode 的派生 DrawingVisual 中属性设置为 EdgeMode.Aliased
:
public class MyDrawingVisual : DrawingVisual
{
public MyDrawingVisual()
{
VisualEdgeMode = EdgeMode.Aliased;
}
}
public class DrawingComponent : FrameworkElement
{
private DrawingVisual visual = new MyDrawingVisual();
public DrawingComponent()
{
AddVisualChild(visual);
using (DrawingContext dc = visual.RenderOpen())
{
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(100, 100), new Point(100, 200));
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(105.5, 100), new Point(105.5, 200));
dc.DrawLine(new Pen(Brushes.Black, 1d), new Point(112, 100), new Point(112, 200));
}
}
protected override int VisualChildrenCount
{
get { return 1; }
}
protected override Visual GetVisualChild(int index)
{
return visual;
}
}
很奇怪,但是在非派生的 DrawingVisual 上调用 RenderOptions.SetEdgeMode(visual, EdgeMode.Aliased)
并没有完成这项工作。
关于c# - 强制 drawingContext 线捕捉到像素边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10256125/
我正在尝试从控件的左边缘到右边缘绘制图形的不同策略。到目前为止,我们一直在使用具有折线的“ Canvas ”,该折线执行的很好,但仍然可以进行一些改进。 当我尝试使用DrawingContext.Dr
这是我的矩形 protected void DrawRectangle(DrawingContext dc, Point point) { DrawingVis
我想劫持通常的 WPF 渲染以将控件拆分为基元,进行布局管理,为我应用绑定(bind)等。 据我所知,WPF 中的整个渲染归结为在布局管理器计算的位置使用依赖属性系统定义的值渲染图元(文本、图像、直线
我通过直接调用 DrawingContext 上的 DrawLine 来绘制图表。由于我想避免任何抗锯齿功能,因此我尝试将 SnapToDevicePixels=true 放在父 UIElement
有人知道是否有可能将 DrawingContext 保存或转换为 Geometry? 例如之后 using (DrawingContext dc = RenderOpen()) { dc.Dr
我在自定义 FrameworkElement 的 OnRender 方法中绘制图像。我也想画这个图像的阴影。我需要在代码中执行此操作,并且我不想使用 DropShadowBitmapEffect,因为
这是此 question 的跟进. 问题: 我正在尝试使用 DrawingContext 绘制一个实心三角形,它在 DrawingVisual 上呈现 目前,我已经成功地使用以下 C# 代码绘制了三角
所以我使用以下代码从输入表单中获取现有图像和文本,然后将输入表单中的文本放置到现有图像上并将其另存为新图像: using (FileStream output = new FileStream(mat
使用 DrawingContext 类,我已经能够使用 DrawRectangle() 方法成功地将装饰器添加到我的 adornedElement。 是否可以构造一个堆栈面板,其中包含文本框和图像 -
我在 WPF 应用程序中绘制图形,但使用 drawingContext.DrawLine(...) 绘制的线被绘制到子像素边界。 我可以通过创建 Line 对象让它们看起来不错,但我不想在每次视觉对象
这是我的第一个问题,但是我潜伏了很长时间。我将把它分成两部分,一部分解释我在做什么以及为什么我认为这是要走的路,第二部分是我自己无法解决的实际问题。 我在做什么? 我目前正在开发用于渲染旨在实时显示的
这个问题在这里已经有了答案: Set VerticalAlignment in DrawText (2 个回答) 关闭8年前. 我需要将文本垂直对齐到顶部或底部或中心。有 FormattedText.
我有几个由 WPF 形状基元组成的常用符号(例如矩形、直线、路径等)。这些符号当前作为用户控件存储在 xaml 文件中。例如:
下面的 WPF 程序会显示一个如下所示的窗口: 黑色方 block 外的鼠标移动会导致窗口标题随鼠标位置更新。当鼠标进入正方形时停止更新。 我希望 MouseMove 继续触发,即使鼠标在正方形上也是
看图。我希望中间线是一条清晰的 1 像素线。您可以将示例标记复制并粘贴到 kaxaml 中。 alt text http://img832.imageshack.us/img832/1704/line
当我画这样的东西时(这里只是随机画): public partial class MainWindow : Window { public MainWindow() {
有没有办法获取WriteableBitmap的DrawingContext(或类似的东西)? IE。允许您调用简单的 DrawLine/DrawRectangle/etc 类型的方法,而不是直接操作原
我有一个 Canvas,在 XAML 中应用了比例转换。使用 DrawingContext 我在 Canvas 上画线。我现在需要在屏幕上添加文本。我认为对于格式化文本我可以应用翻译,但格式化文本或
当我在我的 Canvas 对象(它扩展了 Canvas )上单击并拖动时,我正在绘制一个选择框。我已经像这样覆盖了 OnRender 方法: protected override void O
我有一个 TextBlock。我想在其中绘制(在其当前 视觉边界内)。我需要它的 DrawingContext。 如何获取 DrawingContext? (MSDN 说任何 FrameworkEle
我是一名优秀的程序员,十分优秀!