窗体上有一个名为pboxFull的PictureBox的控件,已加载了jpg图片,想要实现在图片上用鼠标点击一下时在鼠标点击处画一个半径为50的圆,可是我用下面这段代码实现时怎么画出来的圆不在鼠标点击处.
private void pboxFull_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
   int intX = e.X - 50;
   int intY = e.Y - 50;   Pen penCircle = null;
   Graphics graphCircle = null;
   try
  {
penCircle = new Pen(Color.Red,1);
graphCircle = Graphics.FromImag(this.pboxFull.Image);
graphCircle.DrawEllipse(penCircle,intX,intY,100,100);
this.pboxFull.Refresh();
  }
  finally
 {
if ( penCircle != null )
{
   penCircle.Dispose();
}
if ( graphCircle != null )
{
   graphCircle.Dispose();
}
 }
}

解决方案 »

  1.   

    为什么不可以????        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
            {
                int intX = e.X - 50;
                int intY = e.Y - 50;            Pen p = new Pen(Color.Red, 2);
                Graphics g = this.pictureBox1.CreateGraphics();            g.DrawEllipse(p, intX, intY, 100, 100);            g.Dispose();
                p.Dispose();
            }我这里就可以,鼠标点击处为圆的圆心
      

  2.   

    graphCircle = Graphics.FromImage(this.pboxFull.Image);是否是如上这句造成的影响,看看图片产生的坐标与当前位置的坐标有什么差异。
      

  3.   

    把控件中图片模式改为normal就可以了
      

  4.   

    首先谢谢以上各位的热心回答,不过我还想说一下,superbug1984的回答好像圆是画在picturebox上的,而在图片是看不见所画的圆的,mmcl的回答我试了这样确实是可以解决这个问题(但不知为什么,不知能不能解释一下,谢了),还有如果我对PictureBox的sizemode要求为stretchImage怎样解决.
      

  5.   

    stretchImage你的坐标值是变换后的坐标,把50改大点儿你就能看到效果了.