# win.ui.ctrl.picturebox 库模块帮助文档

## win.ui.ctrl 成员列表 <a id="win.ui.ctrl" href="#win.ui.ctrl">&#x23;</a>

### win.ui.ctrl.picturebox() <a id="win.ui.ctrl.picturebox" href="#win.ui.ctrl.picturebox">&#x23;</a>
图像控件。  
推荐改用功能更强大的高级图像控件（plus 控件）。  

[返回对象:pictureboxObject](#pictureboxObject)

## pictureboxObject 成员列表 <a id="pictureboxObject" href="#pictureboxObject">&#x23;</a>

### pictureboxObject._parentForm <a id="pictureboxObject._parentForm" href="#pictureboxObject._parentForm">&#x23;</a>
返回创建控件的容器窗口（win.form对象），所有窗口控件都拥有此只读属性。  
对于使用窗体设计器创建的窗口，也就是返回设计时窗体容器。  

即使子窗口移除子窗口样式、更改父子关系，或以 orphanWindow显示，  
控件的 _parentForm 始终都不会改变  

[返回对象:winform](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/_.html#winform)

### pictureboxObject.adjust <a id="pictureboxObject.adjust" href="#pictureboxObject.adjust">&#x23;</a>

```aardio
pictureboxObject.adjust = function( cx,cy,wParam ) {	   
	/*窗口缩放时会自动触发此函数。  
cx 参数为窗口宽度,cy 参数为窗口高度,  
wParam 参数请参考 _WM_SIZE 消息参数说明,一般不用管。  

所有 win.form 创建的窗体和控件都支持此事件,  
重复赋值只会追加而不会覆盖此事件。  
一般不建议添加一个 wndproc 仅仅是为了处理  _WM_SIZE 消息，  
定义 adjust 事件是更好的选择。  

可主动调用此事件,省略参数时 cx,cy 参数默认设为窗口大小*/    
};
```

### pictureboxObject.autosize <a id="pictureboxObject.autosize" href="#pictureboxObject.autosize">&#x23;</a>
是否允许控件自适应图片大小  
设置center属性为true时,autosize属性无效

### pictureboxObject.bottom <a id="pictureboxObject.bottom" href="#pictureboxObject.bottom">&#x23;</a>
底部坐标

### pictureboxObject.capture <a id="pictureboxObject.capture" href="#pictureboxObject.capture">&#x23;</a>
是否捕获全局鼠标消息

### pictureboxObject.center <a id="pictureboxObject.center" href="#pictureboxObject.center">&#x23;</a>
center 作为属性访问时：  
图像在控件内是否居中显示（并禁用图象缩放，禁止控件自动调整大小）。

### pictureboxObject.center(目标窗口) <a id="pictureboxObject.center" href="#pictureboxObject.center">&#x23;</a>
center 作为方法调用时：  
在目标窗口区域内居中，并调整以保证显示在父窗口或屏幕工作区内。  

参数 @1 可指定目标窗口或者目标窗口句柄，设为 0 表示桌面，  
省略目标窗口则默认取父窗口或所有者窗口。

### pictureboxObject.className <a id="pictureboxObject.className" href="#pictureboxObject.className">&#x23;</a>
运行时类名

### pictureboxObject.clear() <a id="pictureboxObject.clear" href="#pictureboxObject.clear">&#x23;</a>
清空图像，并释放控件加载的位图或图标句柄。  
控件销毁前会自动调用此函数  

注意：  
如果位图包含透明通道，控件会使用复制的位图副本。  
调用者必须自行释放传入的位图句柄。  
gdip.bitmap 复制的位图句柄就会有这个问题。  
com.picture 加载的 GIF 图像无此问题  

改用 plus 控件没有这些麻烦

### pictureboxObject.clientRect <a id="pictureboxObject.clientRect" href="#pictureboxObject.clientRect">&#x23;</a>
获取控件客户区块位置(::RECT结构体)

### pictureboxObject.close() <a id="pictureboxObject.close" href="#pictureboxObject.close">&#x23;</a>
关闭控件

### pictureboxObject.cls <a id="pictureboxObject.cls" href="#pictureboxObject.cls">&#x23;</a>
设计时类名

### pictureboxObject.disabled <a id="pictureboxObject.disabled" href="#pictureboxObject.disabled">&#x23;</a>
是否禁用

### pictureboxObject.getBitmap() <a id="pictureboxObject.getBitmap" href="#pictureboxObject.getBitmap">&#x23;</a>
返回位图句柄或图标句柄。  
返回值 1 为图标句柄则返回值 2 为 1/*_IMAGE_ICON*/  
返回值 1 为位图句柄则返回值 2 为 0/*_IMAGE_BITMAP*/

### pictureboxObject.getClientRect() <a id="pictureboxObject.getClientRect" href="#pictureboxObject.getClientRect">&#x23;</a>
控件客户区块位置(::RECT结构体)  

[返回对象:rectObject](https://www.aardio.com/zh-cn/docs/library-reference/global/_.html#rectObject)

### pictureboxObject.getParent() <a id="pictureboxObject.getParent" href="#pictureboxObject.getParent">&#x23;</a>
返回父窗口  

[返回对象:staticObject](https://www.aardio.com/zh-cn/docs/library-reference/win/ui/ctrl/static.html#staticObject)

### pictureboxObject.getPos() <a id="pictureboxObject.getPos" href="#pictureboxObject.getPos">&#x23;</a>
返回相对坐标,宽,高  
x,y,cx,cy=win.getPos(hwnd)

### pictureboxObject.getRect() <a id="pictureboxObject.getRect" href="#pictureboxObject.getRect">&#x23;</a>
控件区块位置(::RECT结构体)

### pictureboxObject.getRect(true) <a id="pictureboxObject.getRect" href="#pictureboxObject.getRect">&#x23;</a>
控件屏幕区块位置(::RECT结构体)

### pictureboxObject.height <a id="pictureboxObject.height" href="#pictureboxObject.height">&#x23;</a>
高度

### pictureboxObject.hwnd <a id="pictureboxObject.hwnd" href="#pictureboxObject.hwnd">&#x23;</a>
控件句柄

### pictureboxObject.id <a id="pictureboxObject.id" href="#pictureboxObject.id">&#x23;</a>
控件ID

### pictureboxObject.image <a id="pictureboxObject.image" href="#pictureboxObject.image">&#x23;</a>
控件图像。  
取值时仅返回位图句柄。  
赋值时可指定图像文件路径、图像数据、位图句柄、gdip.bitmap 对象 之一。  
设为位图句柄时由窗体负责销毁，设为 gdip.bitmap 对象则自动调用 copyHandle 函数获取句柄。

### pictureboxObject.invalidate(/*可选使用::RECT()对象指定客户区*/) <a id="pictureboxObject.invalidate(/*可选使用::RECT" href="#pictureboxObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效

### pictureboxObject.invalidate(/*可选使用::RECT()对象指定客户区*/,0) <a id="pictureboxObject.invalidate(/*可选使用::RECT" href="#pictureboxObject.invalidate(/*可选使用::RECT">&#x23;</a>
使窗口绘图区无效  
不刷新背景

### pictureboxObject.left <a id="pictureboxObject.left" href="#pictureboxObject.left">&#x23;</a>
左侧坐标

### pictureboxObject.modifyStyle(remove,add,swpFlags) <a id="pictureboxObject.modifyStyle" href="#pictureboxObject.modifyStyle">&#x23;</a>
修改窗口样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### pictureboxObject.modifyStyleEx(remove,add,swpFlags) <a id="pictureboxObject.modifyStyleEx" href="#pictureboxObject.modifyStyleEx">&#x23;</a>
修改窗口扩展样式,所有参数都是可选参数,  
@remove 用数值指定要移除的样式,可使用 _WS_EX_ 前缀的常量  
@add 用数值指定要添加的样式,可使用 _WS_EX_ 前缀的常量  
@swpFlags 可选用数值指定调整窗口选项,可使用 _SWP_ 前缀的常量  
如果指定了 @swpFlag ,则使用该参数调用::SetWindowPos  
细节请参考 win.modifyStyle 函数源码

### pictureboxObject.orphanWindow(transparent,hwndBuddy,borderless) <a id="pictureboxObject.orphanWindow" href="#pictureboxObject.orphanWindow">&#x23;</a>
创建悬浮窗口。  
悬浮窗口是模仿子窗口外观效果的独立窗口，父窗口可自动调整子窗口到设定位置。  
可选参数 @transparent 为 true 则转换为分层透明窗口。  
可选利用 @hwndBuddy 参数指定外部进程窗口句柄的并附加在内部控件上以实现相同的效果。  
伙伴窗口总是会保持在悬浮窗口前面，并保持相同的大小、位置。  
可重复调用此函数更换伙伴窗口，旧的伙伴窗口必须自行关闭。  
可选指定 @borderless 参数 为 true 以移除 @hwndBuddy  的窗口边框。

### pictureboxObject.postMessage(msg,wParam,lParam) <a id="pictureboxObject.postMessage" href="#pictureboxObject.postMessage">&#x23;</a>
投递窗口消息到消息队列中  
此函数用法请参考 ::User32.PostMessage

### pictureboxObject.redraw() <a id="pictureboxObject.redraw" href="#pictureboxObject.redraw">&#x23;</a>
刷新

### pictureboxObject.reloadScale() <a id="pictureboxObject.reloadScale" href="#pictureboxObject.reloadScale">&#x23;</a>
按设计时位置参数、重新调整控件位置以适应窗口当前缩放比例。  
父窗口缩放时会自动执行此操作。  
默认在启动窗口消息循环时会自适应调整所有控件。  
所以在启动消息循环前添加控件不必调用此函数。

### pictureboxObject.right <a id="pictureboxObject.right" href="#pictureboxObject.right">&#x23;</a>
右侧坐标

### pictureboxObject.saveScale() <a id="pictureboxObject.saveScale" href="#pictureboxObject.saveScale">&#x23;</a>
根据控件当前位置、缩放比例，更新控件的设计时位置参数。  
以避免下次窗口缩放自适应调整控件当前位置更改被清除，  
控件所有调整位置的属性或成员函数已自动调用此函数。

### pictureboxObject.saveScale(scaleX,scaleY,dpiScaleX,dpiScaleY) <a id="pictureboxObject.saveScale" href="#pictureboxObject.saveScale">&#x23;</a>
根据控件当前的运行时位置更新设计时大小\如果控件允许自动缩放，窗口缩放时依据设计时大小按比例缩放  
所有参数可省略,并且不建议写参数

### pictureboxObject.sendMessage(msg,wParam,lParam) <a id="pictureboxObject.sendMessage" href="#pictureboxObject.sendMessage">&#x23;</a>
发送窗口消息  
此函数用法请参考 ::User32.SendMessage

### pictureboxObject.setBitmap(位图句柄) <a id="pictureboxObject.setBitmap" href="#pictureboxObject.setBitmap">&#x23;</a>
设置控件显示的位图。  
参数 @1 可指定位图句柄或 gdip.bitmap 对象。  
成功返回 true，自动销毁控件原来的位图或图标。  

注意：  
如果位图包含透明通道，控件会使用复制的位图副本。  
调用者必须自行释放传入的位图句柄。   
可比对 getBitmap 返回的句柄与设置的句柄验证此问题。  
参数指定 gdip.bitmap 复制的位图句柄就会有这个问题。  
com.picture 加载的 GIF 图像无此问题。  
直接在参转中传入 gdip.bitmap 对象或改用 plus 控件可避免此问题。

### pictureboxObject.setBitmap(图片句柄,false) <a id="pictureboxObject.setBitmap" href="#pictureboxObject.setBitmap">&#x23;</a>
设置图片  
如果参数 @2 恒等于 false ，  
则成功返回控件原来的位图或图标句柄

### pictureboxObject.setFocus() <a id="pictureboxObject.setFocus" href="#pictureboxObject.setFocus">&#x23;</a>
设置焦点

### pictureboxObject.setIcon(图标句柄) <a id="pictureboxObject.setIcon" href="#pictureboxObject.setIcon">&#x23;</a>
设置控件显示的图标，参数 @1 指定图标句柄。  
成功返回 true，自动销毁控件原来的位图或图标。

### pictureboxObject.setIcon(图标句柄,false) <a id="pictureboxObject.setIcon" href="#pictureboxObject.setIcon">&#x23;</a>
设置图标  
如果参数 @2 恒等于 false ，  
则成功返回控件原来的位图或图标句柄

### pictureboxObject.setParent(控件对象) <a id="pictureboxObject.setParent" href="#pictureboxObject.setParent">&#x23;</a>
改变父窗口

### pictureboxObject.setPos(x坐标,y坐标,宽,高,插入位置,参数) <a id="pictureboxObject.setPos" href="#pictureboxObject.setPos">&#x23;</a>
调整窗口位置或排序,所有参数可选  
同时指定x,y坐标则移动位置  
同时指定宽高则改变大小  
指定插入位置(句柄或_HWND前缀常量)则调整Z序

### pictureboxObject.setRect(rc) <a id="pictureboxObject.setRect" href="#pictureboxObject.setRect">&#x23;</a>
设置控件区块位置(::RECT结构体)

### pictureboxObject.setRect(rc,true) <a id="pictureboxObject.setRect" href="#pictureboxObject.setRect">&#x23;</a>
设置控件屏幕区块位置(::RECT结构体)

### pictureboxObject.show(true) <a id="pictureboxObject.show" href="#pictureboxObject.show">&#x23;</a>
显示控件

### pictureboxObject.theme <a id="pictureboxObject.theme" href="#pictureboxObject.theme">&#x23;</a>
外观主题,例如  
winform.button.theme = "Explorer"  
winform.button.theme = false

### pictureboxObject.top <a id="pictureboxObject.top" href="#pictureboxObject.top">&#x23;</a>
顶部坐标

### pictureboxObject.update() <a id="pictureboxObject.update" href="#pictureboxObject.update">&#x23;</a>
重绘invalidate函数指定的区块

### pictureboxObject.value <a id="pictureboxObject.value" href="#pictureboxObject.value">&#x23;</a>
控件图像。image 属性的别名。

### pictureboxObject.visible <a id="pictureboxObject.visible" href="#pictureboxObject.visible">&#x23;</a>
当前控件窗口是否显示。  
仅检查当前窗口的可见性样式（窗口 是否具有 _WS_VISIBLE 样式）。  
不考虑父窗口是否可见，不考虑是否被其他窗口遮挡。  
如果需要同时判断父窗口的可见性，应改用 win.isVisible 函数。

### pictureboxObject.width <a id="pictureboxObject.width" href="#pictureboxObject.width">&#x23;</a>
宽度
