picturebox的两个问题!

5iask 2004-11-02 05:07:13
1、单击picturebox时如何获得鼠标所指处的颜色!
2、当picturebox的大小发生变化时,图片也随之变化!
哪位给解决一下,谢谢。
...全文
153 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
5iask 2004-11-04
  • 打赏
  • 举报
回复
谢谢大家,全解决了。
homezj 2004-11-03
  • 打赏
  • 举报
回复
啊!不能这样误导呀?
x,y通过picture1的MouseDown与MouseUp事件都可取得

zdcwin(赵大成)说得对,就这么简单!

paintpicture方法可放在Picture1_Resize事件中

并不是什么都用API好,GetPixel取一个点的颜色更适于对付外部进程,用在自己程序内部并不会比point快,反会绕个大圈子。
fu0212 2004-11-03
  • 打赏
  • 举报
回复
x,y 是通过 获取鼠标在屏幕上的位置,然后通过窗体的TOP,LEFT 计算出来就可以了
5iask 2004-11-03
  • 打赏
  • 举报
回复
那单击时,xy是如何获得的?
zdcwin 2004-11-03
  • 打赏
  • 举报
回复
用picture1.point(x,y)获取鼠标位置的颜色。
用picture1.paintpicture LoadPicture(filename), 0, 0, Picture1.ScaleWidth, Picture1.ScaleHeight来调整图片大小
莫情莫钱 2004-11-03
  • 打赏
  • 举报
回复
用paintpicture来使图片也随之改变
xiuyuan 2004-11-02
  • 打赏
  • 举报
回复
dim colour as long
long = picture1.point(100,100)'获取坐标为100,100的颜色
picure1.paint(loadicture(path),0,0,piture1.scalewidth,picture1.scaleheight)
'使图片筐重画
viena 2004-11-02
  • 打赏
  • 举报
回复
//当picturebox的大小发生变化时,图片也随之变化
算出picturebox的大小变化的比率,然后用PaintPicture重画图像
BlueBeer 2004-11-02
  • 打赏
  • 举报
回复

Point 方法


按照长整数,返回在 Form 或 PictureBox 上所指定磅的红-绿-蓝 (RGB) 颜色。不支持命名参数。

语法

object.Point(x, y)

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

部分 描述
object 可选的。一个对象表达式,其值为“应用于”列表中的一个对象。如果省略 object,带有焦点的 Form 象缺省为 object.
x, y 必需的。均为单精度值,指示 Form 或 PictureBox 的 ScaleMode 属性中该点的水平(x-轴)和垂直(y-轴)坐标。必须用括号包括这些值。


说明

如果由 x 和 y 坐标所引用的点位于 object 之外,Point 方法将返回 -1。


Point 方法示例
本示例使用 Point 方法来确定一个窗体上的一个指定点的颜色。要检验此示例,可将本例代码粘贴到一个窗体的声明部分,然后按 F5 键并单击该窗体。

Private Sub Form_Click ()
Dim LeftColor, MidColor, Msg, RightColor ' 声明变量。
AutoRedraw = -1 ' 打开AutoRedraw。
Height = 3 * 1440 ' 将高度设置为 3 英寸。
Width = 5 * 1440 ' 将宽度设置为 5 英寸。
BackColor = QBColor(1) ' 将背景设置为蓝色。
ForeColor = QBColor(4) ' 将前景设置为红色。
Line (0, 0)-(Width / 3, Height), , BF ' 红框。
ForeColor = QBColor(15) ' 将前景设置为白色。
Line (Width / 3, 0)-((Width / 3) * 2, Height), , BF
LeftColor = Point(0, 0) ' 查找左框颜色,,
MidColor = Point(Width / 2, Height / 2) ' 中框, 和
RightColor = Point(Width, Height) ' 右框。
Msg = "The color number for the red box on the left side of "
Msg = Msg & "the form is " & LeftColor & ". The "
Msg = Msg & "color of the white box in the center is "
Msg = Msg & MidColor & ". The color of the blue "
Msg = Msg & "box on the right is " & RightColor & "."
MsgBox Msg ' 显示信息。
End Sub

BlueBeer 2004-11-02
  • 打赏
  • 举报
回复
picturebox有现成的point方法啦
tztz520 2004-11-02
  • 打赏
  • 举报
回复
picturebox不能使图片跟差变化的.Image控件就可以.


'获得鼠标所指的颜色:
Private Type POINTAPI
x As Long
y As Long
End Type
Private Declare Function BitBlt Lib "gdi32" (ByVal hDestDC As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal dwRop As Long) As Long
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long
Private Declare Function GetDC Lib "user32" (ByVal hwnd 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 Declare Function ScreenToClient Lib "user32" (ByVal hwnd As Long, lpPoint As POINTAPI) As Long
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long



Private Sub Picture1_Click()
Static lX As Long, lY As Long
On Local Error Resume Next
Dim P As POINTAPI, h As Long, hD As Long, c As Long
Dim R As Long, G As Long, B As Long
GetCursorPos P
If P.x = lX And P.y = lY Then Exit Sub
lX = P.x: lY = P.y
h = WindowFromPoint(lX, lY)
hD = GetDC(h)
ScreenToClient h, P

c = GetPixel(hD, P.x, P.y)

R = c And &HFF
G = (c And &HFF00&) / &H100&
B = (c And &HFF0000) / &H10000
Me.BackColor = RGB(R, G, B)
End Sub

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧