| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1724 人关注过本帖
标题:换背景图
只看楼主 加入收藏
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
换背景图
大神看看,我要的是每次就显示一个,点击一次换一个应该怎么搞。
程序代码:
Private Sub Command1_Click()
Form1.AutoRedraw = True
Dim i As Integer
i = i + 1
If i = 10 Then i = 1
Form1.PaintPicture LoadPicture("D:\1111\" & i & ".jpg"), 0, 0
End Sub
        
图片名称为1-9.JPG

[此贴子已经被作者于2016-9-5 19:35编辑过]

2016-09-05 18:48
肇励影
Rank: 2
等 级:论坛游民
威 望:2
帖 子:61
专家分:73
注 册:2016-8-5
收藏
得分:10 
用图片列表控件,采用索引的方式切换图片。
2016-09-06 09:49
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:10 
放个文件列表框,然后设置好路径,文件名,按你支持的图像文件写 Pattern 属性,如 *.JPG;*.bmp 。

一种是按顺序切换
程序代码:
If File1.ListIndex < File1.ListCount - 1 Then       '如果选择的图像小于总图像数
    File1.ListIndex = File1.ListIndex + 1           '无选择时,listindex =-1 ,加1后就变成第1项。
Else
    File1.ListIndex = 0         '返回到第一项
End If

'载入当前选择的图像
Form1.Picture = LoadPicture("D:\1111\" & File1.List(File1.ListIndex))

 
一种是随机换
程序代码:
Randomize                           '初始化随机数发生器,本句建议移到 Form_Load 过程第一句
Dim i As Integer
i = Int(Rnd() * File1.ListCount)    '在图像范围内产生一个随机数,范围:0-listcount-1 ,正好是文件范围

'载入当前选择的图像
Form1.Picture = LoadPicture("D:\1111\" & File1.List(i))


根据你想达到的效果选择

[此贴子已经被作者于2016-9-6 11:33编辑过]


授人于鱼,不如授人于渔
早已停用QQ了
2016-09-06 11:28
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
收藏
得分:0 
回复 2楼 肇励影
大神,不懂你的高科技,我做出来是加载所有图片
程序代码:
Private Sub Command1_Click()
Form1.AutoRedraw = True
Dim i As Integer
For i = 1 To 9
Form1.PaintPicture LoadPicture("D:\1111\" & i & ".jpg"), 0, 0
Next
End Sub
2016-09-06 11:33
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4938
专家分:30047
注 册:2008-10-15
收藏
得分:0 
以下是引用sclx88在2016-9-6 11:33:18的发言:

大神,不懂你的高科技,我做出来是加载所有图片
Private Sub Command1_Click()
Form1.AutoRedraw = True
Dim i As Integer
For i = 1 To 9
Form1.PaintPicture LoadPicture("D:\1111\" & i & ".jpg"), 0, 0
Next
End Sub

刚检查发现你载入图像的代码有问题。好吧,我更正过了。
LoadPicture 函数
   

将图形载入到窗体的 Picture 属性、PictureBox 控件或 Image 控件。

语法

LoadPicture([filename], [size], [colordepth],[x,y])

LoadPicture 函数语法有下列部分:

部分 描述
filename 可选的。字符串表达式指定一个文件名。可以包括文件夹和驱动器。如果未指定文件名,LoadPicture 清除图象或 PictureBox 控件。
size 可选变体。如果 filename 是光标或图标文件,指定想要的图象大小。
colordepth 可选变体。如果 filename 是一个光标或图标文件,指定想要的颜色深度。
x 可选变体,如果使用 y ,则必须使用。如果 filename 是一个光标或图标文件,指定想要的宽度。在包含多个独立图象的文件中,如果那样大小的图象不能得到时,则使用可能的最好匹配。只有当 colordepth 设为 vbLPCustom 时,才使用X 和 Y值。For icon files 255 is the maximum possible value
y 可选变体,如果使用 x, 则必须使用。如果 filename 是一个光标或图标文件,指定想要的高度。在包含多个独立图象的文件中,如果那样大小的图象不能得到时,则使用可能的最好匹配。For icon files 255 is the maximum possible value


设置值

size 的设置值为:

常量 值 描述

vbLPSmall 0 系统小图标。
vbLPLarge 1 系统大图标,由视频驱动程序决定。
vbLPSmallShell 2 外壳小图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的 Caption Buttons 的大小设置决定。
vbLPLargeShell 3 外壳大图标大小,由“控制面板”中的 Display Properties 对话框中 Appearance 选项卡上的图标大小设置决定。
vbLPCustom 4 自定义大小,由 x 和 y 参数提供值。


colordepth 的设置值为:

常量 值 描述

vbLPDefault 0 如果使用指定文件,则为最佳可用匹配。
vbLPMonochrome 1 2 色。
vbLPVGAColor 2 16 色。
vbLPColor 3 256 色。


说明

Visual Basic 可以识别的图形格式有:位图 (.bmp) 文件、图标 (.ico) 文件、光标 (.cur) 文件,行程编码 (.rle) 文件、元 (.wmf) 文件、增强的元文件 (.emf), GIF(.gif) 文件以及 JPEG (.jpg) 文件。

赋值不带参数的 LoadPicture 将清除窗体、图片框及图象控件中的图形。

为了加载在 PictureBox 控件和 Image 控件中显示的图形或加载作为窗体背景的图形,必须将 LoadPicture 的返回值赋给要显示该图片的对象的 Picture 属性。例如:

Set Picture = LoadPicture("PARTY.BMP")
Set Picture1.Picture = LoadPicture("PARTY.BMP")

如果要将图标赋予窗体,则要把 LoadPicture 函数的返回值赋给 Form 对象的 Icon 属性:

Set Form1.Icon = LoadPicture("MYICON.ICO")

图标也可以被赋予除 Timer 控件和 Menu 控件外的其它控件的 DragIcon 属性,例如:

Set Command1.DragIcon = LoadPicture("MYICON.ICO")

使用 LoadPicture 可将图形文件载入到系统剪贴板,如下所示:

Clipboard.SetData LoadPicture("PARTY.BMP")



PaintPicture 方法
      

用以在 Form, PictureBox 或 Printer 上绘制图形文件(.bmp、.wmf、.emf、.cur、.ico或 .dib)的内容。不支持命名参数。

语法

object.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode

PaintPicture 方法的语法包含下列部分:

部分 描述
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 对象缺省为 object。
Picture 必需的。要绘制到 object 上的图形源。Form 或 PictureBox 必须是 Picture 属性。
x1, y1 必需的。均为单精度值,指定在 object 上绘制 picture 的目标坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。  
Width1 可选的。单精度值,指示 picture 的目标宽度。object 的 ScaleMode 属性决定使用的度量单位。如果目标宽度比源宽度 (width2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源宽度。
Height1 可选的。 单精度值,指示 picture 的目标高度。object 的 ScaleMode 属性决定使用的度量单位。如果目标高度比源高度 (height2) 大或小,将适当地拉伸或压缩 picture。如果该参数省略,则使用源高度。
x2, y2 可选的。均为单精度值,指示 picture 内剪贴区的坐标(x-轴和y-轴)。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则缺省为 0。
Width2 可选的。单精度值,指示 picture 内剪贴区的源宽度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源宽度。
Height2 可选的。 单精度值,指示 picture 内剪贴区的源高度。object 的 ScaleMode 属性决定使用的度量单位。如果该参数省略,则使用整个源高度。
Opcode 可选的。是长型值或仅由位图使用的代码。它用来定义在将 pictur 绘制到 object 上时对 picture 执行的位操作(例如, vbMergeCopy 或 vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual Basic Help 文件中的 RasterOp Constants 主题。
在使用opcode时有一些限制。例如,如果资源是图标或图元文件,则只能使用 vbSrcCopy,而不能使用其他的opcode;并且,与图案 (或 SDK 术语中的"画笔"),如 MERGECOPY、 PATCOPY、 PATPAINT 和 PATINVERT,相交互的opcode实际上是同目标的 FillStyle 属性交互。

注意   Opcode 用于将按位操作传递到位图。当传递其他图象类型时将一个值给该参数会造成“无效过程调用或参数”错误。这是设计的原因。要避免这个错误,对于除位图外的图象,将 Opcode 参数置为空。
 


说明

通过使用负的目标高度值 (height1) 和 / 或目标宽度值 (width1) ,可以水平或垂直翻转位图。

可以省略任何多个可选的尾部的参数 。如果省略了一个或多个可选尾部参数,则不能在指定的最后一个参数后面使用逗号。如果想指定某个可选参数,则必须先指定语法中出现在该参数前面的全部参数。

注意,在将一个.Bmp加载入 PictureBox 控件和使用 Windows API 函数 BitBlt() 添加图片之间有一点不同。当您对一个图象使用 BitBlt() 时,PictureBox 控件不知道象您使用 LoadPicture方法那样去调整大小。将 ScaleWidth 和 ScaleHeight 属性设置为图象的大小也不起作用。如果您想在使用 BitBlt 之后用 PictureBox 调整新图片的大小,必须用代码手工做,转换单位并处理边框,下面是如何这样做的一个简单示例:

Sub ResizePictureBoxToImage(pic as PictureBox, twipWd _
  as Integer, twipHt as Integer)
 ' 该代码假设所有的单位都为缇。如果
 ' 不是,必须在调用该例程之前,转换为缇。
 ' 这里也假设图象显示在0,0处。
 Dim BorderHt as Integer, BorderWd as Integer
 BorderWd = Pic.Width - Pic.ScaleWidth
 BorderHt = Pic.Height - Pic.ScaleHeight
 pic.Move pic.Left, pic.Top, twipWd + BorderWd, _
   twipHt + BorderHt
End Sub


授人于鱼,不如授人于渔
早已停用QQ了
2016-09-06 11:34
sclx88
Rank: 1
等 级:新手上路
帖 子:41
专家分:0
注 册:2016-7-31
收藏
得分:0 
回复 3楼 风吹过b
谢谢 完美解决
程序代码:
Private Sub Command1_Click()
Form1.AutoRedraw = True
If File1.ListIndex < File1.ListCount - 1 Then       '如果选择的图像小于总图像数
    File1.ListIndex = File1.ListIndex + 1           '无选择时,listindex =-1 ,加1后就变成第1项。
Else
    File1.ListIndex = 0         '返回到第一项
End If
Form1.Cls '先清除
'载入当前选择的图像
Form1.PaintPicture LoadPicture("D:\1111\" & File1.List(File1.ListIndex)), 0, 0
End Sub
Private Sub Form_Load()
File1.Path = "d:\1111"
File1.Visible = False
End Sub

我在代码里面加了个清除命令,这个不会有什么影响吧

[此贴子已经被作者于2016-9-6 14:14编辑过]

2016-09-06 12:00
快速回复:换背景图
数据加载中...
 
   



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

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