作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在为最新的项目使用druid,我真的很喜欢模型的简单性。但是,我正在努力将镜头与图像配合使用,但不幸的是,文档中没有包含图像功能的文档。
我当时正在考虑编写自己的镜头,但我不想在解锁后克隆大量数据。我正在使用github依赖路径,因此无论它们当前在使用什么版本。
#[derive(Clone, Default, Lens)]
pub struct State {
pub display_image: Option<Arc<RwLock<ImageBuf>>>,
...
}
...
let image = ViewSwitcher::new(
|data: &State, _env| data.display_image.is_some(),
move |f, data: &State, _env| {
if *f {
Box::new(
//if I don't use Arc<RwLock<?>> here, the compiler complains that Imgbuf doesn't impl Data
//The initial image is shown, but when Imgbuf changes, the widget is not updated
//I would imagine this has to do with it being an Arc<RwLock<?>>, but I'm not sure how to make druid and rust happy at the same time
//Is there a wrapper widget available to give me the option of using a closure to update instead of a lens? Like how Label::dynamic(|data, env|) works?
Image::new(data.display_image.as_ref().unwrap().read().unwrap().clone())
.lens(State::display_image),
)
} else {
//Placeholder svg. Completely static. Works well!
Box::new(Svg::new(svg).fill_mode(FillStrat::Fill))
}
},
);
...
重要链接:
最佳答案
我使用painter widget“修复”了此问题,缺点是我必须自己处理纵横比并调整大小。我喜欢一个使用Image小部件的答案,因为源代码说它可以处理大小和宽高比。
let image = ViewSwitcher::new(
|data: &State, _env| data.base_state.is_some() || !data.wrapper_state.is_empty(),
move |f, _data: &State, _env| {
if *f {
Box::new(Painter::new(|ctx, data: &State, _env| {
if data.is_changed() {
let rect = ctx.size().to_rect();
let img = ImageBuf::from_dynamic_image(
data.display_image.as_ref().unwrap().read().unwrap().clone(),
);
let img = img.to_piet_image(ctx.render_ctx);
ctx.with_save(|ctx| {
ctx.draw_image(&img, rect, piet::InterpolationMode::Bilinear);
});
data.set_changed(false);
}
}))
} else {
Box::new(Svg::new(svg.clone()).fill_mode(FillStrat::Fill))
}
},
);
关于image - 用镜头更换德鲁伊图像小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65138254/
我正在尝试使用 Ebean 获取模型的一部分在 Play! Framework ,但我遇到了一些问题,但没有找到任何解决方案。 我有这些模型: 用户: @Entity @Table(name = "u
我需要一些帮助。我有两个具有一对一关系的类: @Entity public class Parent extends Model{ @Id public Long id; @OneToMa
我是一名优秀的程序员,十分优秀!