我在超文本标记语言5 JavaScript上找到了很多关于这个主题的东西(像这样),但是我在WPF上什么也没找到。
我有一个我们正在创建的画布,用于在画布中的图像上选择点。
XAML中的canvas元素非常简单:
<Canvas x:Name="Cnv" Grid.Column="1" Grid.Row="1" />
我们从鼠标点击中获取坐标,如下所示:
Point p = Mouse.GetPosition(Cnv);
然后,我们在这一点上画一些东西:
ellipse = new Ellipse();
ellipse.Fill = Brushes.Transparent;
ellipse.Width = 20;
ellipse.Height = 20;
ellipse.Stroke = Brushes.Gray;
ellipse.StrokeThickness = 1;
Cnv.Children.Add(ellipse);
Canvas.SetLeft(ellipse, p.X-9);
Canvas.SetTop(ellipse, p.Y-5);
这里的问题是,如果用户调整屏幕大小,画布也会调整大小。当然,坐标不再正确。
有没有办法在与画布更“相对”的位置绘制这个椭圆?考虑到这些点,我如何正确调整画布的大小?有事件处理程序吗?
您可以使用Viewbox,并注意图像大小是其源位图的本机像素大小。
<Viewbox>
<Grid>
<Image Source="..."
Width="{Binding Source.PixelWidth, RelativeSource={RelativeSource Self}}"
Height="{Binding Source.PixelHeight, RelativeSource={RelativeSource Self}}"
MouseDown="ImageMouseDown"/>
<Canvas x:Name="canvas"/>
</Grid>
</Viewbox>
无论缩放比例如何,鼠标事件处理程序都会在单击位置放置一个椭圆,并且单击位置(和椭圆大小)以位图像素坐标表示:
private void ImageMouseDown(object sender, MouseButtonEventArgs e)
{
var pos = e.GetPosition((IInputElement)sender);
var ellipse = new Ellipse
{
Width = 20,
Height = 20,
Fill = Brushes.Magenta
};
Canvas.SetLeft(ellipse, pos.X - 10);
Canvas.SetTop(ellipse, pos.Y - 10);
canvas.Children.Add(ellipse);
}
本文向大家介绍html5-canvas 画布大小和分辨率,包括了html5-canvas 画布大小和分辨率的使用技巧和注意事项,需要的朋友参考一下 示例 画布的大小是它在页面上占据的区域,由CSS width和height属性定义。 画布分辨率定义了它包含的像素数。通过设置画布元素的width和height属性来设置分辨率。如果未指定,则画布默认为300 x 150像素。 下面画布将使用上述CSS
为了更好的提升微页面在移动端的阅读体验,对于微页面图片上传做了以下限制: 图片大小最大2M 图片分辨率最大1080px; 在遇到设计师给出超大分辨率的高清图片时,可通过 1、在系统文件夹内找到需要调整的图片,右键选择【编辑】,进入画图编辑图片; 2、在画图左上区域找到【重新调整大小】并点击,在弹出窗口【调整大小和扭曲】中选择重新调整大小依据为“像素”,勾选“保持纵横比”,在水平输入框中输入750(
现在我有一个应用程序,可以让用户单击按钮浏览用作画布背景的图片。我想这样做,如果用户单击画布上的某个地方,则在该点放置一个节点。我假设我需要获取鼠标坐标。有没有一个简单的方法可以调用将节点放置在鼠标单击位置,或者我必须在这个链接中选择路线:WPF-使用鼠标事件在画布上绘图?提前谢谢。 编辑:添加了我尝试制作椭圆的代码。不过它不起作用,而且我不确定如何使用鼠标点击椭圆的坐标。我知道对于一行来说,它只
问题内容: 将click事件处理程序添加到canvas元素(将返回click的x和y坐标)(相对于canvas元素)的最简单方法是什么? 不需要旧版浏览器兼容性,Safari,Opera和Firefox都可以。 问题答案: 这个答案很老了,它使用检查不再需要的旧浏览器,因为和属性在所有当前浏览器中都有效。您可能想查看PatriquesAnswer,以获得更简单,最新的解决方案。 最初的答案: 正如
软件:Win7 64,Delphi XE5
在javaFX中,调整画布大小没有这样的方法,唯一的解决方案是从画布扩展。 “从画布扩展”是使画布可调整大小的唯一解决方案吗?因为这个解决方案只有在我们不想使用FXML的情况下才起作用,如果我们在FXML中声明一个画布,我们如何使它可以调整大小? 这是我的代码: