| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1011 人关注过本帖, 1 人收藏
标题:关于用Picture拷贝图片的问题
只看楼主 加入收藏
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
结帖率:94.12%
收藏(1)
已结贴  问题点数:6 回复次数:5 
关于用Picture拷贝图片的问题
1.如果原图片为空,拷贝时会出错,请问如果原图片为空的代码怎么写?
2.我用以下代码将picture1按比例拷贝到pictuer2:
Public Sub copyim(Picture1, Picture2)
Dim i As Single     '计算比例
Dim j As Single

Dim x As Single     '图片居中用的坐标
Dim y As Single

i = (Picture2.Width) / Picture1.Width        '计算各自缩放比例
j = (Picture2.Height) / Picture1.Height
Debug.Print "i="; i; "j="; j
If i > j Then i = j     '取最小的那个方向的比例

x = (Picture2.Width - Picture1.Width * i) / 2       '计算居中的坐标
y = (Picture2.Height - Picture1.Height * i) / 2

'复制图片,按比例进行缩放
Picture2.PaintPicture Picture1.Picture, x, y, Picture1.Width * i, _
Picture1.Height * i

End Sub

两个图片,picture1总能显示出来(picture1绑定数据库的photo字段),而picture2总是显示不出来(有时只是显示出一小部分)。请问是怎么回事?该怎么解决?

[ 本帖最后由 冰雪清风 于 2009-11-22 21:31 编辑 ]
搜索更多相关主题的帖子: Picture 拷贝 
2009-11-22 21:28
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
PICture2 的自动重绘需要设为自动.

只显示出一部分,
可能是显示出来了,但因为被别的控件或窗体盖过一下而被擦掉了.

授人于鱼,不如授人于渔
早已停用QQ了
2009-11-23 08:20
冰雪清风
Rank: 1
等 级:新手上路
帖 子:65
专家分:0
注 册:2009-11-9
收藏
得分:0 
1.picture的自动重绘设为自动,代码怎么写?
picture2为空的代码是不是picture2.picture=""?
2.不是的,没有别的控件或窗体盖过它。我程序设的是点击picture2时打开文件夹选择图像文件,并装入picture1,再在picture2重绘。第一次点击后只有picture1有显示,picture2没有或只有一部分。再点击一次,不选择图像文件,点取消,之后picture2的图像就出现了。很奇怪,该怎么办?

[ 本帖最后由 冰雪清风 于 2009-11-23 20:31 编辑 ]
2009-11-23 20:25
bczgvip
Rank: 14Rank: 14Rank: 14Rank: 14
等 级:贵宾
威 望:66
帖 子:1310
专家分:5312
注 册:2009-2-26
收藏
得分:2 
if (picture2.picture is nothing) then
'kong
else
'...
endif
2009-11-24 08:17
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:4 
回复 3楼 冰雪清风

Picture2.AutoRedraw =True      '设置自动重绘,以获得持久的位图输出.
'凡是使用了绘图命令,图像复制命令后,都要设置这个属性,才能显示图片
'建议在属性里直接设置,不要用命令修改.

------------------------------
Public Sub copyim(Picture1, Picture2)
Dim i As Single     '计算比例
Dim j As Single

Dim x As Single     '图片居中用的坐标
Dim y As Single

i = (Picture2.Width) / Picture1.Width        '计算各自缩放比例
j = (Picture2.Height) / Picture1.Height
Debug.Print "i="; i; "j="; j
If i > j Then i = j     '取最小的那个方向的比例

x = (Picture2.Width - Picture1.Width * i) / 2       '计算居中的坐标
y = (Picture2.Height - Picture1.Height * i) / 2

'忘了清屏了,这次加上
Picture2.Cls

'复制图片,按比例进行缩放
Picture2.PaintPicture Picture1.Picture, x, y, Picture1.Width * i, _
Picture1.Height * i

End Sub




图片.rar (2 KB)

授人于鱼,不如授人于渔
早已停用QQ了
2009-11-24 08:58
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4947
专家分:30084
注 册:2008-10-15
收藏
得分:0 
AutoRedraw 属性
      

返回或设置从图形方法到持久图形.的输出。

语法

object.AutoRedraw [= boolean]

AutoRedraw 属性语法包含下面部分:

部分 描述
object 对象表达式,其值是“应用于”列表中的一个对象。
Boolean 布尔表达式,指定如何重绘对象,“设置值”中有详细描述。


设置值

boolean 的设置值如下:

设置值 描述
True 使 Form 对象或 PictureBox 控件的自动重绘有效。图形和文本输出到屏幕,并存储在内存的图象中。该对象不接受绘制事件,必要时,用存储在内存中的图象进行重绘。
False (缺省值)使对象的自动重绘无效,且将图形或文本只写到屏幕上。 当需要重画该对象时,Visual Basic 会激活对象绘制事件。


说明

使用下列图形方法工作,如:Circle、Cls、Line、Point、Print 和 Pset,该属性极为重要。利用这些方法,在改变对象大小或隐藏在另一个对象后又重新显示的情况下,设置 AutoRedraw 为 True,将在 Form 或 PictureBox 控件中自动重绘输出。

运行时 在程序中设置 AutoRedraw,可以在画持久图形(如背景色或网格)和临时图形之间切换。如果设置 AutoRedraw 为 False,以前的输出成为背景屏幕的一部分。当 AutoRedraw 设置为 False,用 Cls 方法清除绘图区时不会删除背景图形。把 AutoRedraw 改回 True 后,再用 Cls 将清除背景图形。

注意 如果设置 BackColor 属性,所有图形和文本,包括持久图形,都被清除。一般来说,除非 AutoRedraw 设置为 True,所有图形都需用 Paint 事件显示。

要取回在 AutoRedraw 设置为 True 时创建的持久图形,用 Image 属性。当 AutoRedraw 设置为 True 时,用对象的 hDC 属性可以将持久图形传送给Windows API。

如果设置窗体的 AutoRedraw 属性为 False,然后最小化该窗体,则将 ScaleHeight 和 ScaleWidth 属性设置为图标大小。在 AutoRedraw 设置为 True 时,ScaleHeight 和 ScaleWidth 保持为恢复窗口的尺寸。如果设置 AutoRedraw 属性为 False,Print 方法将在诸如 Image 和 Shape 等图形控件的顶部打印。

授人于鱼,不如授人于渔
早已停用QQ了
2009-11-24 08:58
快速回复:关于用Picture拷贝图片的问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027226 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved