C# WPF图纸发布

C# WPF图纸发布,c#,wpf,C#,Wpf,我想在WPF中绘制多段线。但它只显示了一个点,因为点之间的差异非常小。我也应用了scaleTransform和TranslateTransform,但问题仍然是一样的 代码是 double minX = 25.52524938052284; double minY = 44.267051317656474; double maxX = 25.525239580522843; double maxY = 44.26684671765647; System.Windows.Point point1

我想在WPF中绘制多段线。但它只显示了一个点,因为点之间的差异非常小。我也应用了scaleTransform和TranslateTransform,但问题仍然是一样的

代码是

double minX = 25.52524938052284;
double minY = 44.267051317656474;
double maxX = 25.525239580522843;
double maxY = 44.26684671765647;
System.Windows.Point point1 = new System.Windows.Point(minX, minY);
System.Windows.Point point2 = new System.Windows.Point(maxX, maxY);

Polyline myPolyline = new Polyline();
myPolyline.Stroke = System.Windows.Media.Brushes.SaddleBrown;
myPolyline.StrokeThickness = 1;

polylinePointCollection.Add(point1);
polylinePointCollection.Add(point2);

ScaleTransform st = new ScaleTransform(100000,100000,25,25);
myPolyline.RenderTransform = st;
TranslateTransform tt = new TranslateTransform(100, 100);
myPolyline.RenderTransform = tt;
canvas.Children.Add(myPolyline);  

这是示例代码。我有一个从15到20的点列表,所以坐标之间的这个小的基本差异必须显示在屏幕上,但它只显示一个点。

您正在处理一些非常小的差异,因此,变换坐标非常敏感。考虑你的代码并做一些小的调整,考虑以下内容:

(跳过翻译,少量调整数字)

double minX=25.52524938052284;
双米尼=44.267051317656474;
双maxX=25.525239580522843;
双最大值=44.26684671765647;
double diffX=maxX-minX;//-0.0000097999999972842033
double diffY=maxY-minY;//-0.00020460000000355194
//将值设置为正微小差异
minX=25.525d;
minY=44.266d;
maxX=25.526d;
maxY=44.267d;
System.Windows.Point point1=新的System.Windows.Point(minX,minY);
System.Windows.Point point2=新的System.Windows.Point(maxX,maxY);
多段线myPolyline=新多段线();
myPolyline.Stroke=System.Windows.Media.Brushes.SaddleBrown;

myPolyline.StrokeThickness=0.0003d;//我不确定您是否显示了足够的代码。帆布是如何连接到窗户上的?
double minX = 25.52524938052284;
double minY = 44.267051317656474;
double maxX = 25.525239580522843;
double maxY = 44.26684671765647;

double diffX = maxX - minX;         // -0.0000097999999972842033
double diffY = maxY - minY;         // -0.00020460000000355194

// setting values to positive small differences
minX = 25.525d;
minY = 44.266d;
maxX = 25.526d;
maxY = 44.267d;

System.Windows.Point point1 = new System.Windows.Point(minX, minY);
System.Windows.Point point2 = new System.Windows.Point(maxX, maxY);

Polyline myPolyline = new Polyline();
myPolyline.Stroke = System.Windows.Media.Brushes.SaddleBrown;
myPolyline.StrokeThickness = 0.0003d;  // <-- necessary due to scaling

myPolyline.Points.Add(point1);
myPolyline.Points.Add(point2);

System.Windows.Point center = new System.Windows.Point();
center.X = minX + ((maxX - minX) / 2.0d) - 0.001d;
center.Y = minY + ((maxY - minY) / 2.0d) - 0.001d;

double scale = 100000.0d;
//ScaleTransform st = new ScaleTransform(100000, 100000, 25, 25);
ScaleTransform st = new ScaleTransform(scale, scale, center.X, center.Y);
myPolyline.RenderTransform = st;

//TranslateTransform tt = new TranslateTransform(100, 100);
//myPolyline.RenderTransform = tt;
canvas.Children.Add(myPolyline);