关于自定义类

adaptcw 2007-10-24 02:06:46
我写了个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里没有反应,不知道是为什么?请帮帮忙


...全文
91 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
给分了,谢谢大家的帮忙
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
恩,因为我想做个工作流程图,所以要绘制line,如果也写成label的话会不会有背景呢?
hiddkiller 2007-10-24
  • 打赏
  • 举报
回复
line线?
不太了解
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
恩,好了,还有个小问题
如果我想写一个Line类的话,应该继承什么呢?
class ImputClass:?????????
hiddkiller 2007-10-24
  • 打赏
  • 举报
回复
AutoSize=False;
Size=new Size(200,200);
hiddkiller 2007-10-24
  • 打赏
  • 举报
回复
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);
}

hiddkiller 2007-10-24
  • 打赏
  • 举报
回复

public ImputClass(): base()
{
this.Click += new EventHandler(MethodLabel_Click);
AutoSize=False;
size=(200,200);
}
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
label工作区域很小的
你这是在相对于它的坐标X=100 ,Y=100的地方画的啊。。。

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


请问这是在哪里设置的??
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
类改成了这样:

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:\毕业论文\c#_exp暑假\ico\Input_Document.jpg";

public ImputClass(): base()
{
this.Click += new EventHandler(MethodLabel_Click);

}

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

e.Graphics.DrawImage(myImage, p);
}
}
}
adaptcw 2007-10-24
  • 打赏
  • 举报
回复
试过了,还是不行,form里面这样写的
private void BBT_OUTPUTTABLE_ItemDoubleClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
ImputClass haha = new ImputClass();

this.Controls.Add(haha);

Point p = new Point();
p.X = 100;
p.Y = 100;

haha.Location = p;
}
对马?
hiddkiller 2007-10-24
  • 打赏
  • 举报
回复
label工作区域很小的
你这是在相对于它的坐标X=100 ,Y=100的地方画的啊。。。

把label的AutoSize属性设置为 False;再把它拉大看看
bumm 2007-10-24
  • 打赏
  • 举报
回复
OnPaint函数中的Point坐标太大了,已经超过了Label的默认大小,改为
p.X=0;
p.Y=0;
就OK了

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧