日期:2014-05-18  浏览次数:20988 次

关于自定义类
我写了个Label的自定义类,OnPaint事件是读入一个图片,想在Form中显示;

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.ComponentModel; 

namespace workflowTest
{
  class ImputClass:System.Windows.Forms.Label
  {
  //图片的路径
  string Imagedir=@"E:\Input_Document.jpg";
   
  public ImputClass(): base()
{

}

  protected override void OnPaint(System.Windows.Forms.PaintEventArgs e)
  {
  Image myImage = Image.FromFile(Imagedir);
  Point p=new Point();
  p.X=100;
  p.Y=100;

  e.Graphics.DrawImage(myImage, p);
  }

  }
}


下面是form中调用的代码:

  ImputClass haha = new ImputClass();

  this.Controls.Add(haha);
   
  Point p=new Point();
  p.X=100;
  p.Y=100;

  haha.Location=p;

但是form里没有反应,不知道是为什么?请帮帮忙




------解决方案--------------------
OnPaint函数中的Point坐标太大了,已经超过了Label的默认大小,改为
 p.X=0; 
 p.Y=0; 
就OK了
------解决方案--------------------
label工作区域很小的
你这是在相对于它的坐标X=100 ,Y=100的地方画的啊。。。

把label的AutoSize属性设置为 False;再把它拉大看看

------解决方案--------------------

public ImputClass(): base() 

this.Click += new EventHandler(MethodLabel_Click); 
AutoSize=False;
size=(200,200);
}

------解决方案--------------------
protected override void OnPaint(System.Windows.Forms.PaintEventArgs e) 

base.OnPaint(e);
Image myImage = Image.FromFile(Imagedir); 
Point p=new Point(); 
p.X=100; 
p.Y=100; 

e.Graphics.DrawImage(myImage, p);