截屏中出现的传值问题?急啊!

bob_er 2006-10-27 08:37:26
我做了一个动态截屏程序
在第二个FORM中得到一个BITMAP
怎么在第一个FORM中显示出来/
(1)我做的:截屏后保存一张图片,再传值过去提示可以显示了
但再次截屏,却删除不了那张图片.
(2)直接显示,直接传BITMAP过去显示,可是没有显示出来,

这是为什么啊?
高手指教了!
...全文
110 4 打赏 收藏 举报
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
bob_er 2006-10-28
  • 打赏
  • 举报
回复
呵呵,谢谢
昨晚我已经实现了;

两种方法,
一:用委托传值;
二:也是用委托,不过用一个附加一个为间类用于过渡传递.

还是感谢!
感兴趣的去我163 blog看看!
Knight94 2006-10-28
  • 打赏
  • 举报
回复
委托做的不对,如果说是Form1打开Form2,然后Form2再传递给Form1的值,可以如下去做
public delegate void SetImage( Bitmap myBitmap );
private void SetMyImage( Bitmap myBitmap )
{
mypictureBox.Image = myBitmap;
}

//Open Form2 in form1
Form2 mySubForm = new Form2( new SetImage( SetMyImage ) );
mySubForm.ShowDialog();

//Form2 file
private SetImage pSetImage;

//Form2 constructor
public Form2( SetImage SetImageDelegate )
{
pSetImage = SetImageDelegate;

InitializeComponent();
}

//Callback in Form2
newbitmap = GetPartScreen( point1, point2 );
pSetImage( newbitmap );
bob_er 2006-10-27
  • 打赏
  • 举报
回复
我试过,但出现异常,图片还被占用!

我现在用委托;
但有新问题:
值是传过去了.但第一个FORM中的控件没有更新:
我发一下代码:
FORM1:
public delegate void mydelegate(Bitmap mybitmap);
public static void SetMyImage(Bitmap mybitmap)
{
mypictureBox.Image = mybitmap;
}

FORM2中经过截屏得到一个BITMAP

private void allpicture_DoubleClick(object sender, EventArgs e)
{
newbitmap = GetPartScreen(point1, point2);
mydelegate my = new mydelegate(MyTool.SetMyImage);
my(newbitmap);
this.Close();//该窗口关闭 // Application.Exit();应用程序退出
}

但提示:
错误 1 非静态的字段、方法或属性“BoberTool.MyTool.mypictureBox”要求对象引用 C:\Documents and Settings\bober\桌面\BoberTool\BoberTool\MyTool.cs 340 13 BoberTool


帮帮我!!
Knight94 2006-10-27
  • 打赏
  • 举报
回复
to (1)我做的:截屏后保存一张图片,再传值过去提示可以显示了
但再次截屏,却删除不了那张图片.

先把文件的占用控件对此进行释放,例如:
yourPictureBox.Image = null;
//Delete file here
发帖
C#

10.9w+

社区成员

.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
帖子事件
创建了帖子
2006-10-27 08:37
社区公告

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