带线和点的画布
我正在迁移旧应用程序,并正在尝试实现MVVM.旧应用程序的接口与所描述的中所述的接口相似.虽然稍简单.我不太担心完全关注MVVM,但我想将其用作练习的机会. 我有以下类: public class LineViewModel { public ObservableCollection Points {get;} public Geometry LineGeometry {get;} } 在我的应用程序视图模型中,我有一系列的行,我想在画布上绘制这些线路,但我也想绘制组成每一行的点. 这是我到目前为止的XAML:
6 2024-04-26
编程技术问答社区
在画布上拖放形状
我使用MouseDragElementBehavior让用户在画布上拖动形状: MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior(); dragBehavior.Attach(myShape); 现在,我想知道何时移动myshape以及何时掉落myshape. 您能否提出一个代码,当Myshape移动时打印鼠标坐标,并在删除Myshape时打印"掉落"? 太感谢了 ! 解决方案 Mousedragelementbehavior类具有 dragbegun dragfined 拖动 事件.我相信订阅这些会做您需要的
12 2024-04-26
编程技术问答社区
画布中的翻译点
我的应用程序中有一个滚动查看器,其中包含一个画布,其中我有一个树自定义的树结构.我正在尝试将特定节点元素的位置相对于滚动查看器的位置(我可以滚动),但我的尝试不起作用. 我尝试使用marker.TranslatePoint(new Point(0, 0), scrollViewer)(其中marker是画布中的元素),但这只是返回画布的位置,而不是标记.同样,如果我尝试marker.TranslatePoint(new Point(0, 0), layoutCanvas),我总是会得到(0,0),无论标记实际上在哪里. . 这是我的代码: var marker = m_Metadata[node].Marker; var location = marker.TranslatePoint(new Point(0, 0), scrollViewer); // This inorrectly gives the position of the canvas, rather
8 2024-04-26
编程技术问答社区
如何知道鼠标在画布上点击了什么控件?
我正在创建C#WPF应用程序,并寻找一种方法来执行以下操作: 我有一个帆布,其中包含不同的用户控件和一个按钮. 当我单击按钮时,光标将更改为手(canvas.cursor = Cursors.Hand) 然后,如果我单击其中一个控件,我将获得一个消息框,显示了单击控件的名称(名称是控件的公共属性). 如果我单击其他地方,则我将重置光标,然后再单击按钮,然后才能再次获取名称. 我尝试玩活动和处理程序,但无法实现我想要的. 非常感谢您的帮助 解决方案 您可以使用Canvas.MouseDown并与GetPosition()一起使用GetPosition()鼠标下降事件,以获取单击的元素. public void MouseDownHandler(object sender, MouseButtonEventArgs e) {
12 2024-04-26
编程技术问答社区
如何保存图像画布到文件夹?
我需要使用Ajax或JavaScript保存帆布图像... !! TK! 我的观点 @using (Html.BeginForm("SaveImage", "Campaign", FormMethod.Post, new { id = "drawingForm" })) { Your browser does not support the HTML5 canvas tag.
10 2024-04-26
编程技术问答社区
WPF-如何在鼠标点击时获得画布位置,不受分辨率和大小的影响。
我在此主题上找到了很多html 5 javaScript(/a>),但我在WPF上什么也没发现. 我有一个我们正在创建的画布,用于在图像中选择点. XAML中的画布元素非常简单: 我们从鼠标单击中获取坐标: Point p = Mouse.GetPosition(Cnv); 然后,我们在这一点上绘制一些内容: ellipse = new Ellipse(); ellipse.Fill = Brushes.Transparent; ellipse.Width = 20; ellipse.Height = 20; ellipse.Stroke = Brushes.Gray; ellipse.StrokeThickness =
10 2024-04-26
编程技术问答社区
在墨水画布上的鼠标位置不画出形状 C# WPF
我使用以下代码在鼠标位置的墨水瓦斯上绘制正方形.但是,它不会在鼠标位置的中心绘制形状,而是向右稍微稍微降低,如下图所示: : 此外,当我单击时,我想阻止笔在画布上添加形状. 如何纠正定位并停止笔图? private void inkCanvas_MouseMove(object sender, MouseEventArgs e) { cursorCoords.Content = Mouse.GetPosition(Application.Current.MainWindow); // Get the x and y coordinates of the mouse pointer. System.Windows.Point position = e.GetPosition(this); pX = position.X; pY = position.Y; } private Stroke NewRectangle(double
4 2024-04-26
编程技术问答社区
如何改变UIElement的一个值
我有一个WPF应用程序和画布.在画布中,我有一个矩形.在程序已经处理时,如何更改他的属性,例如高度或宽度?类似: int index = 0; var childByIndex = canvas.Children[index]; childByIndex.SetValue(Height, 15); 解决方案 您将不得不说您要设置哪种类型的DP: ((Rectangle)canvas.Children[index]).SetValue(Rectangle.HeightProperty, 15.0); 其他解决方案 最简单的方法是在XAML中给矩形一个名称,然后在您的代码中使用它: rect.Height = 15; 如果由于某种原因无法在XAML中给矩形一个名称,则可以在执行操作之前将发现的对象投入到Rectangle: : Rectang
6 2024-04-26
编程技术问答社区
擦除鼠标拖动的画布上的内容
我正在开发Metro风格的油漆.我想应用橡皮擦功能.那么,如何像在MS Paint中一样制作这样的工具来擦除画布中的内容? 我不想清除整个帆布,无论我在哪里单击或拖动指针,都应删除指针传播的路径. 解决方案 要记住的重要一件事情是您不是"擦除".您的绘画用很小,而像素在鼠标旅行的区域上.有100种不同的方法可以做到这一点,但是没有任何内置的东西可以简单. 您可能需要检测鼠标(或手指)触摸的每个像素(或您选择的任何度量单位),并对已经绘制的其他内容放置白色矩形控制. 这主要是管理大量矩形对象并在适当时间更改其颜色的游戏.如果您要删除较大矩形的一部分,则应重新考虑您的方法.
10 2024-04-26
编程技术问答社区
使用PointCollection在画布上扩展多段线,同时过度绘制C# WPF
我正在创建AutoCAD插件,该插件从现有几何形状中获取点,将其传递到另一个窗口,并在画布上与多线线相同的几何形状创建对象. AutoCAD对象是多线线,因此必须透支某些点(顶点). i从AutoCAD,顶点的长度收集点,然后将其转换为在画布上的真实坐标中中心对象.然后,当我绘制它时,我得到了: 我收集的点是正确的,它们是相似的.在画布上绘制的代码在这里: private void drawOnCanvas(List points) { // Create a black Brush SolidColorBrush blackBrush = new SolidColorBrush(); blackBrush.Color = Colors.Black; // Create a polyline Polyline poly = new Polyline();
10 2024-04-26
编程技术问答社区
C# WPF绘制网格
我想这样做一个图纸网格: 有人可以帮我吗? 我现在有这个:
12 2024-04-25
编程技术问答社区
将项目添加到Canvas Unity C#中
我试图在C#中动态地将项目添加到我的画布中. 这是我想做的 public class MyScript : MonoBehaviour { private List _buttons; private GameObject _canvas; public MyScript() { _buttons = new List(); } // Use this for initialization void Start() { for (int i = 0; i
12 2024-04-25
编程技术问答社区
在WPF画布上书写成千上万笔画的最佳方法
我必须通过触摸WACOM平板电脑(例如在纸上)实施写作,并且我需要在WPF画布中渲染每秒多达200杆.问题是,经过大约20秒的写作,它会变得有些落后,而laggs的成长.我将所有笔触存储在哈希集中中.我考虑了当哈希集包含600多个元素并将其设置为背景图像并清除标签时拍摄屏幕拍摄,但是在大约30张屏幕截图后,它会变得有些模糊.您有任何想法如何使它变得更好吗? 解决方案 您可以使用WriteableBitmap.这是非常快的,但是它可以通过将单个字节写入位图来起作用,因此,如果您需要在图纸上应用效果,那么您必须自己编写它们.这是您如何使用WriteableBitmap的一个示例.在调试模式下需要约100毫秒才能在我的计算机上绘制1000行(每条1600点)的1000行(每条1600点),但我敢肯定这可以优化. 我只是随机绘制线条,但是您可以从Canvas中获得事件并捕获手写笔的位置并在每次笔触后通过它们. public partial class MainWindow :
10 2024-04-24
编程技术问答社区
在透明背景的画布上获取鼠标位置
我正在构建一个简单的WPF应用程序.我有一个透明的最大化 Window和Canvas(canvas1). 我想在canvas1或MainWindow中获得鼠标位置(在这种情况下是同一件事). 为此,我使用此代码: Point p = Mouse.GetPosition(canvas1); //and then I have p.X and p.Y 此代码适用于非透明 Canvas.问题是我有一个透明 Canvas,并且此代码不起作用...(它没有给我错误,但是坐标是p.X = 0和p.Y = 0) . 如何解决此问题? 解决方案 一种可能的解决方法是使用GetCursorPos win32函数: [DllImport("user32.dll")] [return: MarshalAs(UnmanagedType.Bool)] static extern bool GetCursorPos(out System.Drawin
8 2024-04-23
编程技术问答社区
与用于序列化 XAML 的 XamlWriter 相对应的 UWP
我正在编写一个应用程序,其中用户能够将元素放在画布上并自定义以创建图片.我已经能够将图片保存为位图,但是需要能够序列化并保存画布的XAML代码本身,以便我可以进行审理和重建图像,并让用户再次编辑它. 不幸的是, XamlWriter在UWP中没有可用,但是是否有等效的序列化XAML?还是我必须经历检查画布中每个元素并保存其位置和特性的折磨? 解决方案 UWP中有几个序列化器:xmlSerializer,datacontractserializer,jsonserialializer. 这是关于它的好文章: 为Windows Store应用程序选择正确的序列化引擎 这是其他: 保存和加载应用程序数据(Windows Store C#UWP/8.1)
8 2024-04-23
编程技术问答社区
在运行时对齐控件时的卡住线
我有一个应用程序,用户可以在表格上拖动控件.但他们 重新要求我使用快照行,以使控件的对齐变得更加容易.我不知道Snep -to Lines以及如何实现它们 - 我已经看过: 我如何获得应用程序中的snap-to行(类似于vs中的东西)? 谢谢 bael 解决方案 在您的移动控制中,您可以通过分开然后乘以行宽度来调整Left和Top>: left = (left/10)*10; top = (top/10)*10; 它不是完美的,但是很简单.当然,由于控件没有MoveEnd事件,因此您必须跟踪MouseButton状态或类似的内容. 编辑:更好的实现将适当地围绕分区结果,因此134 = 130和136 =140. 其他解决方案 我也有同样的问题,我仍在寻找解决方案;这是我到目前为止所做的,它可能是您的解决方案 const grid = 12; private void MyControl_LocationChanged(object
10 2024-04-23
编程技术问答社区