Trang 1 trên tổng số 4 123... Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 31 kết quả

Đề tài: Cách vẽ đường thẳng trên winform như thế nào ?

  1. #1
    Ngày gia nhập
    08 2010
    Nơi ở
    TP.HCM
    Bài viết
    40

    Angry Cách vẽ đường thẳng trên winform như thế nào ?

    Mình muốn tạo một đường line như hình bên dưới thì phải làm sao( mình tìm trên các control không có control nào làm được đều đó). Mọi người giúp mình nhe. Thanks
    Happ code </>

  2. #2
    Ngày gia nhập
    03 2009
    Bài viết
    267

    Trích dẫn Nguyên bản được gửi bởi bkmt Xem bài viết
    Mình muốn tạo một đường line như hình bên dưới thì phải làm sao( mình tìm trên các control không có control nào làm được đều đó). Mọi người giúp mình nhe. Thanks
    dùng picturebox đi , vẽ ra image rồi gán vào picturebox

  3. #3
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    Muốn vẽ thì phải dùng đồ họa. Nó cung cấp sẵn các đối tượng cơ bản: hình vuông,đường thẳng,...Có thể vẽ luôn vào Form hoặc vào control nào đó of form:picturebox,..
    ví dụ:
    Visual C# Code:
    1. using System;
    2. using System.Collections.Generic;
    3. using System.ComponentModel;
    4. using System.Data;
    5. using System.Drawing;
    6. using System.IO;
    7. using System.Threading;
    8. using System.Text;
    9. using System.Windows.Forms;
    10. using System.Drawing.Drawing2D;
    11.  
    12. namespace FindTheShortestWay
    13. {
    14.  
    15.     public partial class FrmDrawWay : Form
    16.     {
    17.  
    18.         Point[] v = new Point[90];
    19.         int[,] c = new int[50, 50];
    20.         int[,] p = new int[50, 50];
    21.         int n,i, m, d, cuoi;
    22.         int oo = 32000;
    23.         int[] b = new int[50];
    24.         bool block = false;
    25.         //-----------phuong thuc xem duong di giua cac dinh da duoc chon---------------
    26.  
    27.         public FrmDrawWay(int n, int m, int[,] c, int[] b, int[,] p, int d, int cuoi)
    28.         {
    29.             //--------Khởi tạo các giá trị-----------------
    30.             InitializeComponent();
    31.             ResizeRedraw = true;
    32.             i = 1;
    33.             this.c = c;
    34.             this.b = b;
    35.             this.p = p;
    36.             this.n = n;
    37.             this.m = m;
    38.             this.d = d;
    39.             this.cuoi = cuoi;
    40.  
    41.         }
    42.         protected void view_click(object sender, EventArgs e)
    43.         {
    44.             Graphics grfx = CreateGraphics();
    45.             Pen pen = new Pen(Color.Red);
    46.             Brush br = new SolidBrush(Color.Blue);
    47.             Font f = new Font(" ", 20, FontStyle.Bold);
    48.             for (int k = m; k > 1; k--)
    49.             {
    50.                 int x1 = v[b[k]].X, x2 = v[b[k - 1]].X;
    51.                 int y1 = v[b[k]].Y, y2 = v[b[k - 1]].Y;
    52.                 int dx = x2 - x1, dy = y2 - y1, step;
    53.                 float x, y, xInc, yInc;
    54.                 if (Math.Abs(dx) > Math.Abs(dy)) step = Math.Abs(dx);
    55.                 else step = Math.Abs(dy);
    56.                 float st = step;
    57.                 xInc = dx / st;
    58.                 yInc = dy / st;
    59.                 x = x1;
    60.                 y = y1;
    61.                 grfx.DrawString("*", f, br, x, y);
    62.                 for (int i = 1; i <= step; i++)
    63.                 {
    64.                     x = x + xInc;
    65.                     y = y + yInc;
    66.                     grfx.DrawString("*", f, br, x, y);
    67.                     Thread.Sleep(1);
    68.                 }
    69.             }
    70.  
    71.         }
    72.         //kiem tra xem dinh vua nhan co bi trung voi dinh vua ve xong hay khong,neu gan qua thi ko duoc ve
    73.         static bool Over(int x1, int y1, int x2, int y2)
    74.         {
    75.             if (Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)) < 40)
    76.                 return true;
    77.            return false;
    78.         }
    79.  
    80.         //=============================================================================
    81.         protected override void OnMouseDown(MouseEventArgs e)
    82.         {
    83.             Graphics grfx = CreateGraphics();
    84.             base.OnMouseDown(e);
    85.             if (i > n)
    86.             {
    87.                 Draw_canh();
    88.                 block = true;
    89.             }
    90.             else
    91.                 if (e.Button == MouseButtons.Left && block == false)
    92.                 {
    93.                     //kiem tra :di so sanh khoang cach het voi cac dinh con lai xem co bi gan,trung' dinh nao ko
    94.                     bool kt = true;
    95.                     for (int k = 1; k < i; k++)
    96.                         if (Over(e.X, e.Y, v[k].X, v[k].Y))
    97.                             kt = false;
    98.                     if (kt)
    99.                     {
    100.                         v[i].X = e.X;
    101.                         v[i].Y = e.Y;
    102.                         Font f = new Font(" ", 10, FontStyle.Bold);
    103.                         Brush br = new SolidBrush(Color.Red);
    104.                         grfx.DrawEllipse(new Pen(Color.Blue), e.X, e.Y, 20, 20);
    105.                         grfx.DrawString(i.ToString(), f, br, e.X, e.Y + 5);
    106.                         grfx.Dispose();
    107.                         i++;
    108.                     }
    109.                 }
    110.         }
    111.  
    112.  
    113.         //============================================================================================
    114.         protected void Draw_canh()
    115.         {  //ve cac canh cua do thi
    116.             //ta cho vong for cua j chay nua duoi cua ma tran
    117.             //khong ve dinh do voi chinh no cho nen ta chi can cho i chay tu 2
    118.             Graphics grfx = CreateGraphics();
    119.             Pen pen = new Pen(Color.Blue);
    120.             Brush br = new SolidBrush(Color.Red);
    121.             Font f = new Font(" ", 10, FontStyle.Bold);
    122.             int i, j;
    123.             for (i = 2; i <= n; i++)
    124.                 for (j = 1; j < i; j++)
    125.                     if (c[i, j] == c[j, i])
    126.                     {
    127.                         if (c[i, j] != oo)
    128.                         {
    129.  
    130.                             grfx.DrawLine(pen, v[i].X, v[i].Y, v[j].X, v[j].Y);
    131.                             grfx.DrawString(c[i, j].ToString(), f, br, (v[i].X + v[j].X) / 2, (v[i].Y + v[j].Y) / 2);
    132.  
    133.                         }
    134.                     }
    135.                     else
    136.                     {
    137.                         if (c[i, j] != oo)
    138.                         {
    139.  
    140.                             grfx.DrawLine(pen, v[i].X, v[i].Y, v[j].X, v[j].Y);
    141.                             grfx.DrawString(c[i, j].ToString(), f, br, (v[i].X + v[j].X) / 2, (v[i].Y + v[j].Y) / 2);
    142.                         }
    143.                         //ve chieu nguoc lai
    144.                         if (c[j, i] != oo)
    145.                         {
    146.  
    147.                             grfx.DrawLine(pen, v[i].X - 10, v[i].Y, v[j].X - 10, v[j].Y);
    148.                             grfx.DrawString(c[j, i].ToString(), f, br, (v[i].X + v[j].X - 10) / 2, (v[i].Y + v[j].Y - 10) / 2);
    149.                         }
    150.                     }
    151.         }
    152.  
    153.         private void btnClose_Click(object sender, EventArgs e)
    154.         {
    155.             this.Close();
    156.         }
    157.     }
    158. }
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  4. #4
    Ngày gia nhập
    02 2010
    Bài viết
    15

    Cách đơn giản nhất đúng là dùng đồ họa.Thông thường bạn có thể override Onpaint() của form sau đó dùng hàm DrawLine() để vẽ đường thẳng.

  5. #5
    Ngày gia nhập
    08 2010
    Nơi ở
    TP.HCM
    Bài viết
    40

    Cám ơn mọi người đã gợi ý. Nhưng mình vẫn chưa hiểu lắm, nên chưa thực hiện được. Mình muốn vẽ trực tiếp một đươờng lên form như hình bên dưới thì phải làm như thế nào. Mong mọi người hướng dẫn cho mình nhe. Thanks
    Attached Thumbnails Attached Thumbnails Drawnline on Form.PNG  
    Happ code </>

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    Hà Nội
    Bài viết
    188

    Mặc định Cách vẽ đường thẳng trên winform như thế nào ?

    Vẽ vời thì mình ko rõ lắm. nhưng nếu chỉ cần thế thì cho 1 cái label và đánh 1 hàng ______ là OK

  7. #7
    Ngày gia nhập
    04 2009
    Nơi ở
    Gầm cầu
    Bài viết
    2,230

    cách đơn giản nhất là bạn dùng 1 label , set text ="" , để size chế độ auto , cho height=2 là xong ,width="bao nhiêu tùy ý"

    vậy là có 1 line nằm ngang

  8. #8
    Ngày gia nhập
    08 2011
    Nơi ở
    Yên Bái- Hà Nội
    Bài viết
    961

    hix. Đông vui thật, t vừa nghịch xong.Chỉ cần tạo 1 cái UC rồi cho kích thước của nó ở dạng height=2,3,... (tùy độ dày), chọn luôn màu cho nó(backcolor).Không cần vẽ vạch gì đâu. Sau đó bên cái form bạn dùng chỉ cần Kéo và thả vào là xong. Khi đó, bạn có thể tùy chính độ rộng, độ dài và màu mè cho nó. Thế là xong rồi.hihi
    Đã được chỉnh sửa lần cuối bởi mrfour.it : 09-12-2011 lúc 10:19 AM.
    Skype: mrfour.it - Yahoo:mrfour_it
    Gmail: mrfour.it@gmail.com
    Bạn muốn học lập trình? Bạn chưa có kiến thức cơ bản? Bạn muốn học từ cơ bản tới nâng cao?... Bạn muốn có source code để tham khảo? Muốn có người hỗ trợ khi học?....http://www.laptrinh123.com sẽ giúp bạn những điều đó!

  9. #9
    Ngày gia nhập
    12 2010
    Bài viết
    683

    @pkmt: cái này chuẩn nè!

    Vẽ đường thẳng giống trong word đó hử!???

    Nếu đúng thế thì dùng Visual Basic Power Pack trong Visual studio kéo thả y chang word!!!

    Oval, hình chữ nhật,++...thừa lua đó!!!

    cái này hình như update lên visual SP1 thì mới có chứ bình thường thì có Print form thôi....

    ko biết 2010 thế nào!!!

    Định cài 2010 mà PC gà quá!!!
    Đã được chỉnh sửa lần cuối bởi cchangkhongayngo : 09-12-2011 lúc 11:09 AM.

  10. #10
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Label và Shift + "-" là ra mà , mình toàn làm vậy

Các đề tài tương tự

  1. Graphic Vẽ ma trận trên winform như thế nào.
    Gửi bởi sonhaxatacmoi trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 05-09-2013, 08:56 AM
  2. Trả lời: 2
    Bài viết cuối: 22-09-2011, 07:37 PM
  3. Vẽ các đoạn thẳng trên nền màn hình
    Gửi bởi kid1232 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 15
    Bài viết cuối: 19-06-2011, 09:13 PM
  4. Chương trình vẽ đường thẳng trên C#?
    Gửi bởi thuan trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 3
    Bài viết cuối: 17-10-2010, 12:01 AM
  5. Vẽ nhiều đường thẳng đến 1 điểm trên C#!!!
    Gửi bởi long_uit trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 1
    Bài viết cuối: 28-04-2009, 02:40 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn