C# 用C语言绘制特定对角线#
我试图通过使用PictureBox图形来引导和绘制特定的线 以下是我的愿景: 以下是我迄今为止所做的尝试:C# 用C语言绘制特定对角线#,c#,winforms,C#,Winforms,我试图通过使用PictureBox图形来引导和绘制特定的线 以下是我的愿景: 以下是我迄今为止所做的尝试: //int nx = 9, ny = 9; float dx = (float)PictureBox.Width / 8; float dy = (float)PictureBox.Height / 5; int x1 = 0; int y1 = 1; int x2 = 1; int y2 = 0; //Pen Paint Stlye PenBlack.DashStyle = Sys
//int nx = 9, ny = 9;
float dx = (float)PictureBox.Width / 8;
float dy = (float)PictureBox.Height / 5;
int x1 = 0;
int y1 = 1;
int x2 = 1;
int y2 = 0;
//Pen Paint Stlye
PenBlack.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
//0 < (9 + 9)
while (y1 < (9 + 9))
{
g.DrawLine(PenBlack, x1 * dx, y1 * dy, x2 * dx, y2 * dy);
y1++;
x2++;
}
//int nx=9,ny=9;
float dx=(float)PictureBox.Width/8;
float dy=(float)PictureBox.Height/5;
int-x1=0;
int y1=1;
int x2=1;
int y2=0;
//钢笔画
PenBlack.DashStyle=System.Drawing.Drawing2D.DashStyle.Solid;
//0 < (9 + 9)
而(y1<(9+9))
{
g、 抽绳(黑色,x1*dx,y1*dy,x2*dx,y2*dy);
y1++;
x2++;
}
但从中我得到了:
基本上,我希望它是准确的,甚至在改变图片盒大小时也是如此。试试:
float dx = (float)PictureBox.Width / 9.0f;
float dy = (float)PictureBox.Height / 4.5f;
因为你有9x9的正方形,想要1x2的正方形坡度。。。所以dx=xs/(9/1)
和dy=ys/(9/2)
试试:
float dx = (float)PictureBox.Width / 9.0f;
float dy = (float)PictureBox.Height / 4.5f;
因为你有9x9的正方形,想要1x2的正方形坡度。。。因此dx=xs/(9/1)
和dy=ys/(9/2)
只是网格错误。
我添加了两个全局变量:
int nx = 12, ny = 10;
NX是X轴上有多少个正方形
NY是Y轴上有多少个正方形
基本上,这与我的网格代码是一致的:
//Divide WIDTH x Axis int 3 columns
int x1 = TAPBxCanvas.Width / 2;
//Divide HEIGHT y Axis into 3 rows;
int y1 = TAPBxCanvas.Height / 2;
//Find the Second point
Point width = new Point(x1,y1);
// - - -
float dx = (float)TAPBxCanvas.Width / nx;
float dy = (float)TAPBxCanvas.Height / ny;
PenGray.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
for (int ix = 0; ix <= nx; ix++)
{
g.DrawLine(PenGray, ix * dx, 0, ix * dx, TAPBxCanvas.Height);
}
for (int iy = 0; iy <= ny; iy++)
{
g.DrawLine(PenGray, 0, iy * dy, TAPBxCanvas.Width, iy * dy);
}
并将高度除以DnY的结果:
float dy = (float)TAPBxCanvas.Height / DnY);
其他一切都保持不变,我得到了:
只是网格错误。
我添加了两个全局变量:
int nx = 12, ny = 10;
NX是X轴上有多少个正方形
NY是Y轴上有多少个正方形
基本上,这与我的网格代码是一致的:
//Divide WIDTH x Axis int 3 columns
int x1 = TAPBxCanvas.Width / 2;
//Divide HEIGHT y Axis into 3 rows;
int y1 = TAPBxCanvas.Height / 2;
//Find the Second point
Point width = new Point(x1,y1);
// - - -
float dx = (float)TAPBxCanvas.Width / nx;
float dy = (float)TAPBxCanvas.Height / ny;
PenGray.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
for (int ix = 0; ix <= nx; ix++)
{
g.DrawLine(PenGray, ix * dx, 0, ix * dx, TAPBxCanvas.Height);
}
for (int iy = 0; iy <= ny; iy++)
{
g.DrawLine(PenGray, 0, iy * dy, TAPBxCanvas.Width, iy * dy);
}
并将高度除以DnY的结果:
float dy = (float)TAPBxCanvas.Height / DnY);
其他一切都保持不变,我得到了:
你能澄清一下吗?“我希望它是准确的”是什么意思?两个屏幕截图看起来非常相似。如果你看第二个,对角线不会像第一个一样精确地对齐到正方形的角落。@Charleh在第二个图片中,对角线的末端不接触网格交点,但在第一个图片中是这样的。需要更多的细节:图片框的大小是否固定?网格正方形的数量是参数化的还是固定的?网格正方形实际上是正方形吗?如果你数你的线,你有8条。你试过把它设为9吗?如果这是可行的,那么它只是一个简单的例子,确保您将网格细分为与您的线条绘制算法相同的位数。如果你想一想,你想画一条对角线,在每一个正方形的右上角(忽略垂直度),所以你肯定需要和正方形一样多的线,你能澄清吗?“我希望它是准确的”是什么意思?两个屏幕截图看起来非常相似。如果你看第二个,对角线不会像第一个一样精确地对齐到正方形的角落。@Charleh在第二个图片中,对角线的末端不接触网格交点,但在第一个图片中是这样的。需要更多的细节:图片框的大小是否固定?网格正方形的数量是参数化的还是固定的?网格正方形实际上是正方形吗?如果你数你的线,你有8条。你试过把它设为9吗?如果这是可行的,那么它只是一个简单的例子,确保您将网格细分为与您的线条绘制算法相同的位数。如果你仔细想想,你想画一条对角线,它接触到每个正方形的右上角(忽略垂直度)当然你需要尽可能多的线,因为有正方形,我明白,但当我插入它时,我没有得到我想要的结果,而是这样:经过一点修补,我发现不是对角线错了,而是它们后面的网格错了,所以我把它修好了。谢谢你的帮助,我明白了,但是当我插入它的时候,我没有得到我想要的结果,而是这样:经过一点小修补,我发现错的不是对角线而是它们后面的网格,所以我把它修好了。谢谢你的帮助