C # para desenhar um ponto no controle PictureBox
Como perceber que um ponto será desenhado toda vez que o botão esquerdo do mouse for clicado no controle PictureBox? Dois métodos são resumidos aqui.
Primeiro insira um controle PictureBox e um botão Botão no formulário.Quando o botão é clicado, o mouse entra no controle PictureBox e um ponto é desenhado a cada clique com o botão esquerdo.
O primeiro método:
usando GDI +, o código é o seguinte:
private string sType;//用来记录button的Name
private void btnDrawPoint_Click(object sender, EventArgs e)
{
sType = "btnDrawPoint";//获取button的Name
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();//创建一个画板
if (sType == "btnDrawPoint")
{
if (e.Button == MouseButtons.Left)
{
g.FillEllipse(Brushes.Red, e.X, e.Y, 4, 4);
}
}
}
O segundo método:
chame o método SetPixel na biblioteca gdi32.dll, o código é o seguinte:
[DllImport("gdi32.dll")]
private static extern int SetPixel(IntPtr hdc, int x1, int y1, int color);
private string sType;//用来记录button的Name
private void btnDrawPoint_Click(object sender, EventArgs e)
{
sType = "btnDrawPoint";//获取button的Name
}
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
Graphics g = pictureBox1.CreateGraphics();//创建一个画板
PointF p = new PointF(e.X, e.Y);//实例化一个点,这个点的坐标就是鼠标的x,y
if (sType == "btnDrawPoint")
{
if (e.Button == MouseButtons.Left)
{
DrawPoint(g, p);//调用画点的方法,把相应参数传入
}
}
}
public void DrawPoint(Graphics g, PointF p)
{
IntPtr hdc = g.GetHdc();
int color = 255;//这里定义了一个整型的颜色变量,255为红色
SetPixel(hdc, (int)p.X, (int)p.Y, color);
g.ReleaseHdc();
}
O segundo método desenha pontos muito pequenos, e você tem que olhar com atenção para vê-los. Portanto, não é recomendado usar o segundo método para desenhar pontos. O primeiro método é conveniente e os pontos desenhados são óbvios.