BGRAControls/zh CN

From Free Pascal wiki
Jump to: navigation, search

Deutsch (de) English (en) português (pt) 中文(中国大陆)‎ (zh_CN)

Install

Download BGRABitmap

Install BGRABitmap with the file bgrabitmappack.lpk.

GitHub: https://github.com/bgrabitmap/lazpaint/

Download BGRAControls

Install BGRAControls with the file bgracontrols.lpk.

GitHub: https://github.com/bgrabitmap/bgracontrols/

概述

许可: Modified LGPL 版本 2.0.

像许多人了解的那样, Lazarus GTK 没有完整的支持Alpha通道. 我创建了一套组件,使用 TBGRABitmap 绘制图标,因此它可以部分解决 GTK 中的Alpha通道问题。 无论如何, 这套组件并不仅仅是GTK的补丁,而是建立在强大的BGRABitmap组件包上,提供了更多的有趣的组件.

作者: Dibo.

组件包创建者和维护者.

BC Controls - TBCButton - TBCLabel - TBCPanel

BGRA Controls - TBGRAImageList - TBGRASpeedButton

作者: Circular.

BGRABitmap 创建者, 贡献者和组件包维护者.

- TBGRAFlashProgressBar - TBGRAGraphicControl - TBGRAKnob - TBGRAShape - TBGRAVirtualScreen

作者: Lainz.

贡献者和组件包维护者.

BC Controls - TBCImageButton - TBCXButton - TBCGameGrid

BGRA Controls - TBGRASpriteAnimation

作者: Emerson Cavalcanti.

- TBGRAImageManipulation

作者: mora.

- BCButton功能性贡献者.

作者: helix2001

- TBGRAResizeSpeedButton.

相关文章

BGRASpriteAnimation - 精灵动画组件的用法.

uE_Controls - 用 BGRABitmap 开发其他控件.

BGRABitmap - 创建本组件使用的控件库.

LazPaint - 使用Lazarus 和 BGRABitmap开发的一个绘画程序.

BC

BCButton

bcbutton.png

BCGameGrid

bcgamegrid.png

BCImageButton

bitmap(位图)必须包含4种状态(自顶到底, 具有同样的Height(高度)) 按照下列顺序: normal(常规、弹起状态), hover(指针滑过), active(活动的、选中), disabled(已禁用).

示例按钮:

samplebgraimagebutton.png

示例按钮(带Alpha通道):

samplebgraimagebuttonalpha.png

BCXButton

高度可定制按钮,具有'OnRenderControl' 事件. 此控件没有默认属性,它假定你将重写此控件并添加你希望具有的一切特性。

- 像 TCDButton (自定义绘制的按钮).

- 为每一个按钮调用一个(或者为所有按钮调用一个) 'OnRenderControl' 事件 (like a Drawer in CD) .

- 创建高度可定制的按钮, 类似BGRAVirtualScreen 或者 BCGraphicControl的用法.

bcxbutton.png

BCLabel

bclabel.png

BCPanel

bcpanel.png

BGRA

BGRAProgressBar

用来替代: TProgressBar

BC-Bgraflashprogressbar.png

Flash progressbar 由circular创建.

BGRAGraphicControl

用来替代: TPaintBox

TBGRAGraphicControl, 允许你绘制带有Alpha通道混合特性的组件.

BGRAImageList

用来替代: TImageList

之前:

before-TImageList.png

之后:

after-TBGRAImageList.png

该组件继承自TImageList. 因此每个组件(测试过TToolBar 和 TTreeView) 使用TImageList.Draw方法来绘制图标, 并自动带alpha通道支持. 只需要用该组件替代TImageList. 该组件只是启动了 GTK 的alpha通道, 因此在Windows (或其他界面)中它的表现和原来的TImageList一样 (它没有使用BGRABitmap来进行绘制).

BGRAImageManipulation

用来替代: TImage

便于在应用程序中导入图像的组件.

在当前版本中可以导入图像,并按照保持纵横比(或不保持)进行剪裁。例如,如果您想要导入的相片使用 3x4 的比例,只需要调整'ratio'属性设置为 3: 4。如果导入的图像具有不同的大小,该组件将确保图像符合所需尺寸的比例。

你可以通过调整属性'MinWidth' 和 'MinHeight'来确定图像的最小尺寸.

你可以使用内建的功能来旋转图像.

参见组件的演示:

bgraimagemanipulation.jpg

当组件将图像更改后, 只需要使用stretch(缩放)将其放入目标组件即可. 很显然目标必须具有同样的纵横比以保证最终的结果不会变形.

BGRAKnob

BC-Bgraknob.png

图形化的旋钮组件, 由circular创建.

BGRAShape

用来替代: TShape

samplebgrashape.png

该组件具有完整的Alpha通道支持并且可以放置你希望的任意多边形,同时具有圆角边框和渐变特性(线性, 放射, 菱形, 反射).

BGRASpeedButton

用来替代: TSpeedButton

BGRASpeedButton.png

该组件继承自TSpeedButton并使用TBGRABitmap来绘制图形. 该组件只是启动了 GTK 的alpha通道, 因此在Windows (或其他界面)中它的表现和原来的TImageList一样 (它没有使用BGRABitmap来进行绘制).

BGRASpriteAnimation

用来替代: TImage

更多信息请阅读文章 BGRASpriteAnimation.

bgraspriteanimation.png

使用该组件你可以进行位图动画. 你需要一个包含所有动画帧图像并按水平排列的位图.

它可以指定动画将要播放的次数 (0 为一直播放, 1, 2, 等等) 并可以停止播放, 同时它可以指定播放速度和方向并支持透明.

特性:

  • 动画: invert, 位置, lap, 速度, 静态, 重复.
  • 精灵: 不透明填充 (全局透明), 翻转模式(水平, 垂直, 双向), 关键颜色 (透明色), 重新采样 (常规 或 高质量重采样). 自动尺寸.
  • AnimatedGifToSprite: 将gif动画转换为BGRABitmap精灵.

BGRAVirtualScreen

用来替代: TPanel, TPaintBox

原理是在内存位图上绘制.

本组件有一个特定的事件, OnRedraw, 当整个位图需要被重绘时调用. 它将在最开始和组件改变大小时发生. 你也可以通过调用Redraw和DiscardBitmap来请求重绘位图. 后者仅仅使内容无效, 其重绘将等到处理消息循环时才进行.

其他情况, 有可能更改位图的属性并调用Invalidate 或 Repaint, 以避免擦除掉整个位图内容.

测试

游戏 - Maze

game maze.png

游戏 - Puzzle

game puzzle.png

SliceScaling - CustomDrawn Windows 7

customdrawnwindows7.png

这是一个Lazarus Custom Drawn Controls的演示, 你需要安装该组件的Lazarus最终修订版才可以工作.

该演示中的组件: button, statictext, checkbox, radiobutton 和 progressbar.

还有一些额外的图片,用于 'Luna' (Windows XP 主题) 'Aero Lite' (Windows 8 主题) 和 其他的按钮 (箭头).

SliceScaling - TAChart

9-slice scaling 对于创建可变尺寸的UI元素非常有帮助(比如在上述的Custom Drawn Windows 7 演示中).

这里是一个 TAChart 例子,使用了slice scaled bars.

slicescaledtachart.png