我想把窗体的颜色变成我所加载图像(但不显示)的左上角的颜色,如何实现阿?(很easy的!!)
我想把窗体的颜色变成我所加载图像(但不显示)的左上角的颜色,如何实现阿?
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
Dim lFirstDotColor As Long
Dim picNumber As Picture
Set picNumber = LoadPicture(App.Path + "/" + "number.jpg")''''''加载一张图片
lFirstDotColor = GetPixel(picNumber.Handle, 1, 1)'''''调用api
With frmImage
.BackColor = lFirstDotColor
End With
End Sub
我觉得应该这样写,但是运行结果不对,哪里出了问题啊?请大虾指教!^_^
问题点数:80、回复次数:8Top
1 楼ZOU_SEAFARER(颓废程序员^_^)回复于 2006-03-17 10:27:09 得分 0
color=[对象].point (x,y)
这个你看看能不能取得色彩Top
2 楼dongyisheng(Apple)回复于 2006-03-17 10:38:43 得分 0
ms 只有picturebox有这个属性,picture没有这个属性啊?这么用阿?求教!!Top
3 楼xDAVIDx(DAVID)回复于 2006-03-17 11:13:00 得分 0
在窗体上放置一个PictureBox控件,然后把你的图像放到PictureBox控件中去,然后按下面这样写:)
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub Form_Load()
Dim lFirstDotColor As Long
lFirstDotColor = GetPixel(Picture1.hdc, 1, 1) '''''调用api
Me.BackColor = lFirstDotColor
End SubTop
4 楼dongyisheng(Apple)回复于 2006-03-17 11:46:24 得分 0
哦,xDAVIDx(DAVID) 提供的写法我是会的(抱歉哦,我没有说清楚),但是如果不用图片框是不是可以呢?(因为仅仅需要加载一下,不用显示的,因为我可能需要同时动态加载许多图片到内存中)
或者说如果我不借助图片框就不能实现了吗?求教……???Top
5 楼rainstormmaster(暴风雨 v2.0)回复于 2006-03-17 13:43:56 得分 80
这样:
Option Explicit
Private Declare Function DeleteDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function CreateCompatibleDC Lib "gdi32" (ByVal hdc As Long) As Long
Private Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal hObject As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
Private Sub test(ByVal FileName As String)
Dim pic As New StdPicture
Dim mDc As Long
Dim lFirstDotColor As Long
Set pic = LoadPicture(FileName) '读取图形档
mDc = CreateCompatibleDC(0) '建立Memory DC
SelectObject mDc, pic.Handle '在该memoryDC上放上bitmap图
lFirstDotColor = GetPixel(mDc, 0, 0)
Me.BackColor = lFirstDotColor
Call DeleteDC(mDc)
End Sub
Private Sub Command1_Click()
test "g:\mc\mmtest.jpg"
End SubTop
6 楼xihongjian(迷失方向的小鸟)回复于 2006-03-17 15:15:58 得分 0
[对象].point (x,y)
取得颜色.然后设置背景色就行把。Top
7 楼caohuang(曹)回复于 2006-03-17 16:02:57 得分 0
先在窗体加载一张背景图片
Form1.BackColor = Point(20, 20)Top
8 楼caohuang(曹)回复于 2006-03-17 16:10:19 得分 0
Private Sub Form_Activate()
Form1.Picture = LoadPicture("C:\Documents and Settings\wf2-1\My Documents\My Pictures\1.jpg")
Form1.BackColor = Form1.Point(20, 20)
End Sub
不知道为什么在窗体的load事件里不可以执行Form1.BackColor = Form1.Point(20, 20)这行代码
Top




