【发布时间】:2011-12-10 22:26:15
【问题描述】:
我正在编写一个允许用户在触摸屏显示器上绘图的应用程序。我目前正在使用下面的方法,效果很好。这种方法正在生成“高分辨率图像”,因为几乎每个像素都绘制了一条线(例如 100、100 -> 102、103)。
这是我的问题。我希望用户绘制一张“低分辨率图片”(大像素板),您可以在其中有意看到 50×50 的像素(例如 100、100 -> 150、150)。有人知道如何做到这一点吗?我正在为 Windows Phone 使用 Silverlight。我正在考虑构建一个 50×50 像素的大网格,但可能控件太多。
void FingerMove(object sender, MouseEventArgs e)
{
if (this.IsDrawing)
{
this.DestinationPoint = e.GetPosition(paint);
Line line = new Line
{
Stroke = this.Color,
X1 = this.DestinationPoint.X,
Y1 = this.DestinationPoint.Y,
X2 = this.OriginPoint.X,
Y2 = this.OriginPoint.Y,
StrokeStartLineCap = PenLineCap.Round,
StrokeEndLineCap = PenLineCap.Round,
StrokeThickness = 15,
Opacity = 1,
};
Debug.WriteLine(string.Join(",", line.X1, line.Y1, line.X2, line.Y2));
paint.Children.Add(line);
}
this.OriginPoint = this.DestinationPoint;
}
【问题讨论】:
-
在渲染到屏幕之前,绘制到一个后台缓冲区(屏幕外位图),然后缩放到另一个尺寸 x 和 y 太小的 50 倍,然后放大到最终在屏幕上绘制,所有这些都没有插值。
-
您是说要查看块状线,还是符合网格的线?
-
@GeorgeDuckett:是的,这就是我想要的。
-
@Martin,哪一个,您想要像素化图像,还是要绘制平滑线条,“对齐网格”?
-
不要画线,而是画 50x50 的矩形。将用户位置除以 50,然后乘以 50(整数除法/乘法)以使其对齐网格。
标签: c# .net silverlight windows-phone-7 drawing