PDA

View Full Version : متد رسم خط در سی شارپ ؟



mehr_ara
دوشنبه 06 آبان 1392, 23:24 عصر
دوستان سلام
بنده برنامه ای نوشتم راجع به رسم خط با استفاده از الگوریتم برسنهام
دنبال متدی در زبان سی شارپ میگردم که ایکس و y را به عنوان ورودی به ان بدهم و خط را رسم کند
متد و نحوه ی استفادشو بهم بگید ممنون میشم

samin_panahi
دوشنبه 06 آبان 1392, 23:53 عصر
سلام این تابع برسنهام هست:


void B_H(int x1, int y1, int x2, int y2)
{
int dx = Math.Abs(x2 - x1);
int dy = Math.Abs(y2 - y1);
int p = (2 * dy) - dx;
int x = x1;
int y = y1;
int step = 0;
if (dx > dy)
{
step = dx;
}
else
{
step = dy;
}
for (int i = 0; i < step; i++)
{
x++;
if (p < 0)
{
p += 2 * dy;
}
else
{
y++;
p += 2 * (dy - dx);
}
setpixel(x, y);
}
}

که می تونی اینجوری تو رویداد کلیک یه باتن فراخوانیش کنی:

B_H(20, 50, 100, 50);

majid_i68
سه شنبه 07 آبان 1392, 01:08 صبح
void pint(int strtX, int strtY,int endX,int endY) {
//تولید خط راست

Graphics gb = CreateGraphics();
Pen ppp = new Pen(Color.Blue,3);
Point p11 = new Point(strtX, strtY);
Point p22 = new Point(endX, endY);
gb.DrawLine(ppp, p11, p22);//دستور کشیدن خط
// تولید مثلث
Graphics gg = CreateGraphics();
Pen pp = new Pen(Color.Red, 3);
Point[] po = new Point[3];//تعداد ضلعها
po[0] = new Point(endX, endY);
po[1] = new Point(endX, endY-3);
po[2] = new Point(endX-3, endY);
gg.DrawPolygon(pp, po);//دستور کشیدن چند ضلعی
}


private void Form1_Paint(object sender, PaintEventArgs e)
{
pint(10, 10, 60, 60);//تابع pint را با اعداد داده شده اجرا میکند
}