搜索
查看: 4893|回复: 6

如何让picturebox 显示的图片,改成picturebox 没有图片的状态?

[复制链接]

75

主题

850

帖子

4990

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4990
发表于 2012-10-22 21:43:32 | 显示全部楼层 |阅读模式
本帖最后由 look 于 2012-10-23 09:36 编辑

import win.ui;
/*DSG{{*/
var winform = win.form(parent=...; text="aardio Form";right=349;bottom=249 )
winform.add(
picturebox={ bottom=141;right=252;left=70;top=41;transparent=1;z=1;text=
"picturebox";cls="picturebox" }
)
/*}}*/

winform.show()

import gdip;
import inet.http;

var imgData = inet.http().get("https://login.sina.com.cn/cgi/pin.php?&lang=zh&r=");
var img = gdip.image ( imgData )   

var graphics = gdip.graphics(  winform.picturebox )
gdip.DrawImage( graphics, img, 0, 0 )

//延时看效果,这个例子我知道可以刷新屏幕去掉,但是想知道如何通过代码让本地图片可以不显示!
win.delay(5000);
var retPrev =  ::SendMessage(winform.picturebox.hwnd,0x172/*_STM_SETIMAGE*/, topointer(0),topointer(0));
if(retPrev)
    ::DeleteObject(
topointer(retPrev));
gdip.DrawImage( graphics,
null, 0, 0 )
win.loopMessage();

小时候,幸福是一件东西,拥有就是幸福; 长大了,幸福是一个目标,达到就是幸福; 成熟后,发现幸福原来是一种心态,领悟就是幸福.
回复

使用道具 举报

4

主题

877

帖子

4719

积分

荣誉会员

Rank: 8Rank: 8

积分
4719
发表于 2012-10-22 22:03:44 | 显示全部楼层

直接绘图,并没有改变控件的图像, 只有刷新控件才能重绘隐藏你画上去的图片,如果不想重绘,就只有把原来的屏幕保护下来再画回去。 只要重绘图像的那一块就可以

直接绘图,并没有改变控件的图像,
只有刷新控件才能重绘隐藏你画上去的图片,如果不想重绘,就只有把原来的屏幕保护下来再画回去。

只要重绘图像的那一块就可以,因为你的控件是透明的,所以需要用到:
  1. winform.picturebox.redrawTransparent()
复制代码
如果是不透明的,可以使用:
  1. winform.picturebox.redraw()
复制代码
绘图并不象控件有前后的区别,你可以理解为在墙上刷油漆,墙只有一个,不论你刷的是哪一块,刷上去就不能反悔,要么重新刷(重绘)
回复

使用道具 举报

75

主题

850

帖子

4990

积分

六级会员

The only one

Rank: 9Rank: 9Rank: 9

积分
4990
 楼主| 发表于 2012-10-22 23:00:17 | 显示全部楼层

[i=s] 本帖最后由 look 于 2012-10-22 23:02 编辑 [/i] [quote][size=2][color=#999999]不争 发表

本帖最后由 look 于 2012-10-22 23:02 编辑
不争 发表于 2012-10-22 22:03
直接绘图,并没有改变控件的图像,
只有刷新控件才能重绘隐藏你画上去的图片,如果不想重绘,就只有把原来 ...

谢谢帮助!绘图知识不多,不知道空图片数据该如何表示;

尝试过:
winform.picturebox.image=null;

img=gdip.image("")
gdip.DrawImage(graphics, img, 0, 0)
小时候,幸福是一件东西,拥有就是幸福; 长大了,幸福是一个目标,达到就是幸福; 成熟后,发现幸福原来是一种心态,领悟就是幸福.
回复

使用道具 举报

0

主题

12

帖子

137

积分

一级会员

Rank: 2

积分
137
发表于 2012-11-16 23:48:57 | 显示全部楼层

{:lol}学习了。

学习了。
回复

使用道具 举报

12

主题

77

帖子

481

积分

二级会员

Rank: 3Rank: 3

积分
481
发表于 2013-6-12 13:17:47 | 显示全部楼层

先隐藏再显示控件上的图就没了 winform.picturebox.hide=true winform.picturebox.hide=false

先隐藏再显示控件上的图就没了
winform.picturebox.hide=true
winform.picturebox.hide=false
回复

使用道具 举报

12

主题

77

帖子

481

积分

二级会员

Rank: 3Rank: 3

积分
481
发表于 2013-6-12 13:42:39 | 显示全部楼层

[i=s] 本帖最后由 fen 于 2013-6-12 13:48 编辑 [/i] 奇怪,以下程序隐藏控件就不灵了,但可用winform.picturebox

本帖最后由 fen 于 2013-6-12 13:48 编辑

奇怪,以下程序隐藏控件就不灵了,但可用winform.picturebox.image=topointer(-1)的方法
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( bottom=239;parent=...;text="aardio Form";right=351 )
  4. winform.add(
  5. button={ bottom=192;right=186;left=118;top=159;z=1;text="取消显示";cls="button" };
  6. picturebox={ bottom=87;right=309;left=31;autosize=1;top=37;z=3;cls="picturebox" };
  7. button2={ bottom=194;text="显示图片";left=20;top=147;z=2;right=92;cls="button" }
  8. )
  9. /*}}*/

  10. winform.button2.oncommand = function(id,event){
  11.         winform.picturebox.image="D:\aardio\example\Windows程序设计\工具栏控件\res\toolbar.gif"
  12. }
  13. winform.button.oncommand = function(id,event){
  14.         winform.picturebox.image=topointer(-1)
  15. }
  16. winform.show()
  17. win.loopMessage();
复制代码
回复

使用道具 举报

12

主题

77

帖子

481

积分

二级会员

Rank: 3Rank: 3

积分
481
发表于 2013-6-12 13:54:43 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=58981&ptid=8415][co

fen 发表于 2013-6-12 13:17
先隐藏再显示控件上的图就没了
winform.picturebox.hide=true
winform.picturebox.hide=false

奇怪,以下方法隐藏控件就不灵了,但可用winform.picturebox.image=topointer(-1)的方法。
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = ..win.form( bottom=239;parent=...;text="aardio Form";right=351 )
  4. winform.add(
  5. button={ bottom=192;right=186;left=118;top=159;z=1;text="取消显示";cls="button" };
  6. picturebox={ bottom=87;right=309;left=31;autosize=1;top=37;z=3;cls="picturebox" };
  7. button2={ bottom=194;text="显示图片";left=20;top=147;z=2;right=92;cls="button" }
  8. )
  9. /*}}*/

  10. winform.button2.oncommand = function(id,event){
  11. //这里如何用相对路径,顺便请教。
  12.         winform.picturebox.image="D:\aardio\example\Windows程序设计\工具栏控件\res\toolbar.gif"
  13. }
  14. winform.button.oncommand = function(id,event){
  15.         winform.picturebox.image=topointer(-1)
  16. }
  17. winform.show()
  18. win.loopMessage();
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|站长邮箱|aardio.com|aardio官方社区 ( 皖ICP备09012014号 )

GMT+8, 2018-4-23 00:29 , Processed in 0.078127 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表