首页 > 解决方案 > 为什么活塞的位置 (0, 0) 似乎在左侧窗口的中间?

问题描述

我遇到了我认为是关于如何使用 Rust Piston 库绘制事物的一个非常基本的误解。这是我正在使用的主要功能,主要是从初学者教程中复制的。

extern crate piston_window;

use piston_window::*;

fn main() {
    let dims = (640.0, 480.0);
    let mut window: PistonWindow =
        WindowSettings::new("Hello, Piston!", (dims.0 as u32, dims.1 as u32))
            .exit_on_esc(true)
            .build()
            .unwrap();
    while let Some(e) = window.next() {
        match e {
            Event::Loop(Loop::Render(_)) => {
                window.draw_2d(&e, |c, g| {
                    clear([1.0; 4], g);
                    rectangle(
                        [1.0, 0.0, 0.0, 1.0],
                        [0.0, 0.0, dims.0, dims.1],
                        c.transform,
                        g,
                    );
                });
            }
            _ => {}
        }
    }
}

我正在尝试绘制一个窗口大小的红色矩形,但是当我运行这个函数时,我在框架的左下角绘制了一个红色框,没有像我预期的那样占据整个窗口。

红色矩形出现在框架的左下角

奇怪的是,如果我将尺寸更改为(480.0, 480.0)使窗口为正方形,则框会像我预期的那样填满窗口。我想这只是我误解了活塞如何处理坐标。我到底错过了什么,为什么位置 (0, 0) 似乎在左侧窗口的中间?

标签: rustcoordinatesrust-piston

解决方案


推荐阅读