Wayland入门教程08.14:窗口背景
系列索引地址:Wayland入门教程索引
之前介绍过个性化鼠标图标,本文介绍个性化窗口背景。
从之前的文章可以了解到,窗口颜色的设置就是将像素值直接赋值给某个点。
那么在使用背景图之前我们需要把图片解码为rgb原始数据。
图片解码
用来测试的图片为
使用ffmpeg解码为rgb格式数据
1 |
|
开发
首先将上一篇窗口的代码拿过来,因为直接从图片获取像素值,所以部分函数就不需要了,根据需要自行删除。
1 |
|
直接从图片获取像素值,这个函数就不需要了。
1 |
|
上面这三个函数用于创建临时文件,不需要了。
修改全局变量
1 |
|
使用的图片多大,这两个值就修改为多大。
主要是修改创建缓冲区函数create_buffer()
打开文件
1 |
|
映射至内存
1 |
|
其他保持不变。
效果为
当然,窗口的大小就是图片的大小,如果要实现背景缩放或者只显示部分背景在之后在说明。
可以看到,颜色有点问题,主要是wl_shm_pool_create_buffer中的WL_SHM_FORMAT_XRGB8888参数影响。经过测试把导出的图片格式从argb改为bgra就正常了。
可以看到和鼠标图片图标的方法一样。
EGL版本只是替换了窗口显示部分,其他的代码一样。
完整代码在Wayland_Freshman中的08.14.custom_surface
下。
Wayland入门教程08.14:窗口背景
https://blog.jackeylea.com/wayland/wayland-custom-surface-background/