我有一个自定义的WPF画布,希望在其上显示网格。我通过重写Canvas上的OnRender方法,并使用DrawingContext绘图函数来实现。IsGridVisible、GridWidth和GridHeight分别是每个网格线之间的水平和垂直像素数。
我还在Canvas.LayoutTransform属性上使用ScaleTransform来缩放Canvas项,正如人们所期望的那样,网格线的粗细会乘以ScaleTransform缩放因子,如下图所示。是否有办法绘制单像素线,而不考虑当前的Canvas RenderTransform?
我还在Canvas.LayoutTransform属性上使用ScaleTransform来缩放Canvas项,正如人们所期望的那样,网格线的粗细会乘以ScaleTransform缩放因子,如下图所示。是否有办法绘制单像素线,而不考虑当前的Canvas RenderTransform?
protected override void OnRender(System.Windows.Media.DrawingContext dc)
{
base.OnRender(dc);
if (IsGridVisible)
{
// Draw GridLines
Pen pen = new Pen(new SolidColorBrush(GridColour), 1);
pen.DashStyle = DashStyles.Dash;
for (double x = 0; x < this.ActualWidth; x += this.GridWidth)
{
dc.DrawLine(pen, new Point(x, 0), new Point(x, this.ActualHeight));
}
for (double y = 0; y < this.ActualHeight; y += this.GridHeight)
{
dc.DrawLine(pen, new Point(0, y), new Point(this.ActualWidth, y));
}
}
}
alt text http://www.freeimagehosting.net/uploads/f05ad1f602.png
这是一个包含链接的段落,链接指向的是一张图片。请点击链接查看图片。