PB 自定义按钮(不使用api重绘)

GIF:

 

 1、引用API是为了画4个角的弧度;

FUNCTION ulong CreateRoundRectRgn(ulong X1,ulong Y1,ulong X2,ulong Y2,ulong X3,ulong Y3) LIBRARY "gdi32.dll"
FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY "user32.dll"

 2、PB9代码,创建Custom Visual可视化对象,命名为vo_commanbutton

forward
global type vo_commanbutton from userobject
end type
type st_text from statictext within vo_commanbutton
end type
end forward

global type vo_commanbutton from userobject
integer width = 453
integer height = 106
long backcolor = 67108864
long tabtextcolor = 33554432
long picturemaskcolor = 536870912
event ue_lbuttondown pbm_lbuttondown
event dd pbm_bndoubleclicked
event ue_lbuttondblclk pbm_lbuttondblclk
event clicked pbm_lbuttonup
st_text st_text
end type
global vo_commanbutton vo_commanbutton

type prototypes
FUNCTION ulong CreateRoundRectRgn(ulong X1,ulong Y1,ulong X2,ulong Y2,ulong X3,ulong Y3) LIBRARY "gdi32.dll"
FUNCTION ulong SetWindowRgn(ulong hWnd,ulong hRgn,boolean bRedraw) LIBRARY "user32.dll"
end prototypes

type variables
CONSTANT long  il_number= 5.7

boolean ib_bold = false //400|加粗700
boolean ib_underline = false //下划线
boolean ib_strkeout = false //删除线

int ii_fontsize=18
string is_text = '测试按钮'

long il_ClickedColor = 14589000,il_color =  14120960//il_HoveColor = 14727818,
long il_FontColor = 16777215
long il_radian = 5

end variables

forward prototypes
public subroutine of_draw (integer as_choose)
end prototypes

event ue_lbuttondown;//
of_draw(1)
end event

event ue_lbuttondblclk;of_draw(1)
end event

event clicked;of_draw(0)

end event

public subroutine of_draw (integer as_choose);string ls_err,ls_syntax
long ll_width,ll_height
long ll_y = 0,ll_x = 0

ll_width = this.width
ll_height = il_number * ii_fontsize
ll_y = (10+this.height - ll_height) / 2

choose case as_choose
		case 0
			this.backcolor = il_color
			st_text.backcolor = il_color	
		case 1 
			ll_x = 5
			ll_y = ll_y + 5
			this.backcolor = il_ClickedColor
			st_text.backcolor = il_ClickedColor
		case 1 	
end choose



st_text.x = ll_x
st_text.y=ll_y
st_text.text = is_text
st_text.textsize= -ii_fontsize
st_text.width = ll_width
st_text.height = this.height
st_text.textcolor = il_FontColor

if ib_bold then
	st_text.weight = 700
else
	st_text.weight = 400
end if

st_text.underline =ib_underline
st_text.italic = ib_strkeout

long ll_Rgn
//圆弧角
ll_width= UnitsToPixels(this.Width,Xunitstopixels!)
ll_height=UnitsToPixels(this.Height, Yunitstopixels!)
ll_Rgn=Createroundrectrgn(0,0,Ll_width,Ll_height,il_radian,il_radian)
Setwindowrgn(Handle(this),ll_Rgn,True)


//
end subroutine

on vo_commanbutton.create
this.st_text=create st_text
this.Control[]={this.st_text}
end on

on vo_commanbutton.destroy
destroy(this.st_text)
end on

event constructor;
of_draw(0)
end event

type st_text from statictext within vo_commanbutton
integer width = 457
integer height = 74
integer textsize = -18
integer weight = 400
fontcharset fontcharset = gb2312charset!
fontpitch fontpitch = variable!
string facename = "宋体"
long textcolor = 33554432
long backcolor = 67108864
boolean enabled = false
alignment alignment = center!
boolean focusrectangle = false
end type

 4、参数说明

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: pb(Protocol Buffers)是一种由Google开发的数据序列化格式,用于在不同平台和语言之间传输和存储结构化数据。pb提供了一种简单高效的方法来定义消息的结构,可以将结构化数据序列化为二进制格式,从而减少传输和存储的数据量。 而pb http api指的是使用pb格式的数据通过HTTP协议进行通信的应用程序接口。pb http api的设计目标是提供一种标准化的接口模式,使得不同平台和语言之间可以方便地进行数据交互。通过使用pb格式的数据,可以更加高效地传输和解析数据,并且pb支持多种语言的库,使得开发者可以在不同的环境中使用pb http api。 在使用pb http api时,通常需要先定义数据的结构,即通过编写.pb文件来描述消息的字段和类型。然后使用pb编译器将.pb文件编译为具体语言的代码,生成可以在应用程序中直接使用的数据模型。接下来,可以通过http协议发送和接收这些pb格式的数据,一般情况下,数据会使用POST请求进行发送,而返回结果会使用JSON格式进行封装。 使用pb http api的好处是可以提高数据传输的效率和准确性。pb格式是一种高效的二进制数据格式,相比于传统的文本数据格式,传输和解析速度更快。而且,pb定义了严格的数据类型,可以确保数据的有效性和准确性,避免了因为数据格式不匹配而引发的错误。 总之,pb http api是一种使用pb格式数据通过http协议进行通信的接口模式,可以提高数据传输的效率和准确性。它适用于不同平台和语言之间的数据交互,并且易于使用和扩展。 ### 回答2: PB HTTP API是一个使用Protocol Buffers(简称PB)和HTTP协议的应用程序编程接口,可以用于在网络上传输数据和进行远程过程调用(RPC)。 首先,Protocol Buffers是一种高效的数据序列化机制,可以将结构化数据以二进制格式进行编码和解码。PB定义了一种数据描述语言,开发人员可以使用该语言定义数据结构和操作。PB支持多种编程语言,包括Java、C++、Python等。 PB HTTP API通过HTTP协议提供了一个通用的网络传输机制。它基于HTTP的请求-响应模型,客户端可以通过HTTP请求将PB数据发送到服务器,服务器收到请求后对数据进行处理,并通过HTTP响应将处理结果返回给客户端。 与传统的HTTP接口相比,PB HTTP API具有以下几个优点: 1. 性能高效:由于PB使用二进制编码和紧凑的数据格式,相比于使用JSON或XML的接口,PB HTTP API可以更快地将数据在网络上进行传输,并节省带宽。 2. 数据结构灵活:PB提供了丰富的数据类型和强大的数据描述语言,开发人员可以定义复杂的数据结构,满足不同的应用需求。 3. 跨平台支持:PB支持多种编程语言,开发人员可以在不同的平台上使用PB HTTP API进行数据交互和RPC调用。 4. 可扩展性:PB HTTP API可以通过定义不同版本的PB数据结构来实现接口的升级和扩展,而不会破坏现有的接口兼容性。 总之,PB HTTP API通过结合Protocol Buffers和HTTP协议,提供了一种高效、灵活和可扩展的数据传输和RPC机制,适用于各种网络应用场景。 ### 回答3: pb (Protocol Buffers) HTTP API 是一种通过 HTTP 协议进行数据交互的编程接口。Protocol Buffers 是一种语言无关、平台无关、可扩展的序列化机制,通过定义数据结构的协议文件进行数据的序列化和反序列化。 PB HTTP API使用首先需要定义好数据结构,即编写 PB 协议文件。在这个文件中,我们可以定义数据的字段、类型和顺序等信息。然后使用特定的编译器将 PB 协议文件编译成对应的源代码,在代码中就可以使用 PB 提供的 API 来对数据进行操作了。 PB HTTP API 的优势在于可以通过 HTTP 协议进行数据的传输,这使得数据交互更加灵活和易于实现。在发送数据时,可以将 PB 对象序列化为二进制格式,然后通过 HTTP 的 POST 请求将数据发送给服务端。在接收数据时,服务端可以通过 HTTP 的请求方法和路径来获取相应的 PB 数据,并进行反序列化操作。 PB HTTP API 还支持数据的压缩和加密,可以通过对 PB 对象进行压缩来减少数据传输的大小,通过对 PB 对象进行加密可以增加数据的安全性。此外,PB HTTP API 还可以与其他的 Web 技术结合使用,如 RESTful API、Websocket 等,以满足不同场景下的需求。 总之,PB HTTP API 是一种基于 Protocol Buffers 和 HTTP 协议的编程接口,它具有灵活、高效和安全等特点,适用于各种场景下的数据交互与通信。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值