#sdl #windows #graphics

sdl2-wallpaper

使用SDL将图形渲染到桌面背景

1 个不稳定版本

0.1.0 2023年7月20日

#175渲染

MIT/Apache

7KB
80 代码行

sdl2_wallpaper

使用SDL2将图形渲染到桌面背景。使用简单函数访问桌面背景窗口或绑定到其上的Rust-SDL2画布。然后,您可以渲染任何您想要的,以实现终极自定义。

注意

目前,仅支持Windows。sdl2_wallpaper只与Windows 10一起开发,因此这是唯一预期可以工作的操作系统。我还没有看到MinGW SDL2开发库是否与此兼容。为了设置Rust-SDL2,我已经成功使用了cargo-vcpkg和“捆绑”功能。

安装

前提条件:确保已安装Rust-SDL2,并且它正在运行。

对于sdl2_wallpaper有两种简单的安装选项。

  1. 从终端使用Cargo
cargo add sdl2_wallpaper
  1. 将依赖项添加到您的Cargo.toml文件中
[dependencies]
sdl2_wallpaper = "0.1.0"

用法

(基于Rust-SDL2 示例)

use sdl2::pixels::Color;
use sdl2::event::Event;
use std::time::Duration;

fn main() {
    let sdl = sdl2::init().unwrap();
    let video_subsystem = sdl.video().unwrap();
    
    // The only real difference here from the Rust-SDL2 example is
    // how we get the window/canvas.

    let mut canvas = sdl2_wallpaper::get_canvas(video_subsystem).unwrap();
    
    // If you'd rather get the window and then build the canvas from that:

    // let window = sdl2_wallpaper::get_window(video_subsystem).unwrap();
    // [maybe do something to your window]
    // let mut canvas = window.into_canvas().build().unwrap()

    canvas.set_draw_color(Color::RGB(0, 64, 255));
    canvas.clear();
    canvas.present();

    let mut event_pump = sdl.event_pump().unwrap();
    let mut i = 0;
    'running: loop {
        i = (i + 1) % 255;
        canvas.set_draw_color(Color::RGB(i, 64, 255 - i));
        canvas.clear();
        for event in event_pump.poll_iter() {
            match event {
                Event::Quit { .. } => break 'running,
                _ => {}
            }
        }
        canvas.present();
        std::thread::sleep(Duration::new(0, 1_000_000_000u32 / 60));
    } 
}

贡献

欢迎Pull请求。请随时使这个项目更加“Rusty”!对于重大更新,例如支持其他操作系统,请首先提交一个问题来讨论您想要的内容以及行动方案。

由于这是一个新包,还有很多可以添加的内容,我相信我们会发现一些错误。让我们一起工作吧!

许可

MITApache-2.0

依赖项

~16MB
~348K SLoC