WPF 中的 Windows 窗体绘制等效事件

2024-01-11

我已使用 PAINT 事件在 Winows 表单应用程序的面板上绘制波浪。但是当使用它的WPF时,我没有找到任何相当于具有Paint Event的Panel的元素。谷歌也查了很多,但没什么用。

好吧,我需要在 WPF 中绘制波形,因此建议使用 PaintArgsEvent 的适当解决方案或完全新的解决方案。

谢谢你!


您正在寻找DrawingVisual http://msdn.microsoft.com/en-us/library/ms742254.aspx Class http://msdn.microsoft.com/en-us/library/system.windows.media.drawingvisual.aspx

从第一个链接:

DrawingVisual 是一个轻量级绘图类,用于渲染形状、图像或文本。此类被认为是轻量级的,因为它不提供布局或事件处理,从而提高了其性能。因此,绘图是背景和剪贴画的理想选择。


您还可以访问折线类 http://msdn.microsoft.com/en-us/library/ms615644%28v=vs.100%29.aspx您可以向其中添加点集合。这个例子是修改过的MSDN 论坛示例 http://social.msdn.microsoft.com/forums/en-US/winforms/thread/00f370b3-75b2-4e84-90c2-cafb2af7c5f9/

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        float x0 = 100f;
        float y0 = 100f;
        Polyline myPoly = new Polyline();
        PointCollection polyPoints = myPoly.Points;
        Point[] points = new Point[200];

        for (int j = 0; j < 200; j++)
        {
            points[j] = new Point();
            points[j].X = x0 + j;
            points[j].Y = y0 -
            (float)(Math.Sin((2 * Math.PI * j) / 200) * (200 / (2 * Math.PI)));
        }

        for (int i = 0; i < points.Length ; i++)
        {
            polyPoints.Add(points[i]);
        }

        myPoly.Stroke = Brushes.Green;
        myPoly.StrokeThickness = 5;
        StackPanel mainPanel = new StackPanel();
        mainPanel.Children.Add(myPoly);
        this.Content = mainPanel;

    }
}

以及修改后的 MSDN 示例:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();

        float x0 = 100f;
        float y0 = 100f;
        Point[] points = new Point[200];

        for (int j = 0; j < 200; j++)
        {
            points[j] = new Point();
            points[j].X = x0 + j;
            points[j].Y = y0 -
            (float)(Math.Sin((2 * Math.PI * j) / 200) * (200 / (2 * Math.PI)));
        }

        DrawingBrush db = new DrawingBrush(CreateDrawingVisualRectangle(points).Drawing);
        StackPanel mainPanel = new StackPanel();
        mainPanel.Background = db;
        this.Content = mainPanel;

    }

    private DrawingVisual CreateDrawingVisualRectangle( Point[] pointarray)
    {
        DrawingVisual drawingVisual = new DrawingVisual();

        // Retrieve the DrawingContext in order to create new drawing content.
        DrawingContext drawingContext = drawingVisual.RenderOpen();

       // Create a rectangle and draw it in the DrawingContext.
       for (int i = 0; i < pointarray.Length-1; i++)
       {
           drawingContext.DrawLine(new Pen(new SolidColorBrush(Colors.Blue), 2), pointarray[i], pointarray[i + 1]);
       }

       // Persist the drawing content.
       drawingContext.Close();

       return drawingVisual;
     }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WPF 中的 Windows 窗体绘制等效事件 的相关文章

  • 如何以编程方式将访问键(快捷方式)添加到 WPF ContextMenu?

    我已经有以下内容 var myContextMenu new System Windows Controls ContextMenu var exitItem new MenuItem exitItem Header E xit exitI
  • 我可以将一个 WPF 窗口叠加在另一个窗口之上吗?

    我有一个 WPF 窗口 其中包含一个WindowsFormsHost元素 我需要在这个元素之上绘制东西 但是它的本质WindowsFormsHost意味着它始终位于绘图堆的顶部 因为我无法在同一 WPF 窗口中绘制WindowsFormsH
  • 表单上的 KeyEvents 只能与 CTRL 结合使用

    Code Private Sub KeyHandling ByVal sender As Object ByVal e As System Windows Forms KeyEventArgs Handles Me KeyDown Sele
  • ListViewItem 与 CheckBox IsChecked 绑定到 ViewModel

    我有一个带有 DataTemplate 的 ListView 用于为每个 ListViewItem 显示一个复选框
  • 为什么在 C# 中成员初始值设定项中不允许这样做,但在 VB.Net Me 中允许

    我正在将 VB Net 应用程序转换为 C 并注意到在 VB Net 代码中 有一个私有成员变量 它是使用Me像这样 Private m ClassA As New MyCollection Of ClassA Me 当我将其转换为 C 代
  • 如何在 C# 中将 Wpf BitmapSource 转换为 byte[] [重复]

    这个问题在这里已经有答案了 可能的重复 WPF 图像到字节 https stackoverflow com questions 553611 wpf image to byte 相对于此 https stackoverflow com qu
  • Wpf ICollectionView 绑定项无法解析类型对象的属性

    我已经绑定了一个GridView与ICollectionView在 XAML 设计器中 属性是未知的 因为CollectionView已转化为类型Object并且无法访问实体属性 它运行良好 没有错误 但设计器将其显示为错误 如果我绑定到集
  • 禁用触发 TextChanged 事件

    I have textbox我正在更改其中的文本lostFocus被解雇了 但这也激发了textChanged事件 我正在处理该事件 但我不希望在这种情况下触发它 我如何在这里禁用它 UPDATE 这个想法与bool很好 但我有几个文本框
  • .NET 图形重影

    我正在为我们正在开发的新应用程序制作一个示例 GUI 我已经决定了语言 但我可以使用任何第 3 方 DLL 或插件或任何我需要的东西 以使 GUI 尽可能无缝地工作 他们希望它非常像 mac ubuntu vista Windows 7 所
  • 默认转换器何时启动?

    使用以下代码 虽然 Text 属性绑定到 DateTime 源属性 但我注意到 WPF 似乎会自动将文本转换为 DateTime 而无需我编写 ValueConverter 有人可以解释一下这是如何完成的吗
  • WPF中ViewModel是否应该继承DependencyObject?

    我尝试创建一个简单的UserControl在 WPF 中使用 MVVM 现在我需要为UserControl 所以我尝试在中创建依赖属性UserControlViewModel 我不想处于代码隐藏状态 为了创建依赖属性UserControlV
  • 如何创建自动滚动文本框

    我有一个 WPF 应用程序 其中包含一个多行文本框 用于显示调试文本输出 如何设置文本框 以便将文本附加到框中时 它会自动滚动到文本框的底部 我正在使用 MVVM 模式 理想情况下 纯 XAML 方法会很好 TextBox 本身不一定是焦点
  • wpf 的 prism 与 mvvm light

    我们正在启动一个带有 MVVM 的 WPF 项目 并且必须决定使用 PRISM 还是 MVVM Light 我对这两个框架都是新手 我已经阅读了一些帖子 但仍然有一些问题 有人可以阐明以下几个方面吗 两个框架 性能 无论出于何种原因 其中一
  • WPF 中的屏幕分辨率问题?

    我将在 WPF 中使用以下代码检测分辨率 double height System Windows SystemParameters PrimaryScreenHeight double width System Windows Syste
  • 使用 WF 的多线程应用程序的错误处理模式?

    我正在写一个又长又详细的问题 但只是放弃了它 转而选择一个更简单的问题 但我在这里找不到答案 应用程序简要说明 我有一个 WPF 应用程序 它生成多个线程 每个线程执行自己的 WF 处理线程和 WF 中的错误 允许用户从 GUI 端进行交互
  • 在 wpf 中隐藏或禁用输入手势文本

    假设我们使用 Ctrl S 输入手势来保存项目 在 文件 菜单 保存 Ctrl S 中显示这样的文本 现在 在 SaveCommand 的 canexecute 上 我检查项目是否需要保存 如果不需要 则禁用 保存 在这种情况下 我会看到类
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 如何(完全)在列表框中实现就地编辑?

    我正在构建一个应用程序 其中ListBox正在显示Description其项目的属性 我想实现与您在 Windows 资源管理器中编辑文件名时发现的相同类型的就地编辑功能 但我发现这需要大量工作 到目前为止我所拥有的是ContextMenu
  • 将集合绑定到自定义控件属性

    我没有运气尝试将数据集合绑定到我的自定义控件的属性 我已经实现了该控件的字符串属性的机制 在此处提供了一些帮助 并期望集合类型同样简单 但是我无法让它再次工作 这是我的自定义控件视图
  • 如何在标准 WPF ListView 中启用 UI 虚拟化

    我正在使用 NET 4 5 VS2012 并且我有一个 ListView 看起来像这样

随机推荐

  • 如何在 Android 中获取 Facebook 上的所有照片

    我正在开发一个应用程序 其中我将 Facebook SDK 用于不同的目的 目前我已经实现了通过Facebook登录 现在我的下一个任务是获取登录用户的所有照片并将其显示在网格中 我正在关注 Facebook 官方开发者网站作为此任务的参考
  • 使用 img srcset 处理响应式图像

    我将 Angular 与材质一起使用 并使用 img srcset 来处理标题的响应图像 这就是我到目前为止正在做的事情 img src assets mtn bg 1600 jpg alt Header image 我对如何使用 srcs
  • TASM:乘法后如何在屏幕上打印寄存器对 dx:ax?

    include io h cr equ 0dh lf equ 0ah stacksg segment stack dw 100 dup stacksg ends datasg segment prp1 db 1st Number cr lf
  • 浏览器后退按钮

    我使用以下代码行来禁用注销后浏览器后退按钮问题 function LogoutOnClick window history go 1 但是 这段代码有一个问题 假设我有三页 第一页是登录页面 login cshtml 和第二个成功登录页面
  • 使用 C# 远程更改 Windows Server 2008 计算机的计算机名称?

    也许有人能够向我指出一个决定性的资源 以了解如何使用 C 在 Windows Server 2008 计算机上远程更改计算机名称 我已经查看了很多网站寻求帮助 现在在我的任务的第二天 并没有真正接近 除了决定 WMI 几乎是我唯一的选择 完
  • 模板化转换构造函数无法访问受保护的数据成员

    我有一个带有转换构造函数的模板类 矩形 它允许在 矩形 到 矩形 之间进行转换 反之亦然 但是在编译代码时 编译器会给出错误 指出构造函数无法访问类的受保护成员 这是代码 include
  • Internet Explorer Web 开发人员工具栏是否可以使用弹出窗口?

    我无法让 Internet Explorer Web 开发人员工具栏与弹出窗口一起使用 它不会在弹出窗口的底部呈现 有什么建议么 有一个very具体方法是 open the developer tools via F12 or whatev
  • 忽略标点符号并突出显示给定字符串中的模式

    我有一个模型字符串和匹配模式列表 我想突出显示给定模型字符串中的所有匹配模式 即使模式 模型中的任何单词包含标点符号 示例字符串 Lorem Ipsum is simply dummy text of the printing and ty
  • 为什么 Perl 有一个单独的“perl”编译器和“perlcc”前端?

    我试图用我的 Perl 代码制作一个可执行文件 然后我意识到没有这样的选项可用perl编译器 经过一番搜索 我发现perlcc http search cpan org dist B C script perlcc PL 它是 Perl 编
  • 在 Meteor.js 中,为什么 this.userId == 未定义?

    我正在通过阅读一本书来学习 Meteor 现在我们想要insert the userId当前登录的用户的 Template categories events keyup add category function e t if e whi
  • 为基于 Web 的应用程序实现自动提醒电子邮件功能

    我想为我的 Web 应用程序创建一个功能 一旦用户输入我的数据库 每 4 周就会向他们发送一封电子邮件 提醒他们提供一些反馈等 我听说 cron 工作就是我正在寻找的 但我很好奇还有什么 是否有一个 php 脚本存在或者有一个简单的方法来做
  • 在 AWS Step Functions Parallel 状态下,如果一个分支失败,是否有办法确保其他分支继续运行直至完成?

    我有一个具有并行状态的步进函数 该函数有四个分支 A B C D 每个分支都有 3 个 Glue StartJobRun 任务状态 如果分支 A 在第一个任务期间失败 我如何确保其他分支在成功后继续执行其任务 正如您在 AWS Step F
  • 将 TAG 格式转换为语料库的正则表达式

    我正在使用一个名为 AntConc 的语料库语言学工具 其中有一个文档 其中每个单词都被标记为词性 名词 形容词等 并且您可以使用特定的命令来提取匹配项 例如 如果我正在寻找一个名词 标记为 NN 我会使用 NN它会找到文档中的每个名词 我
  • jQuery 日期选择器宽度

    我不明白为什么这这么难做到 关于 jQuery 的一切都如此简单 如何设置 jQuery display inline 的宽度日期选择器 我已经编辑了 jquery ui css 但是一旦我更改月份 它就会重置宽度 我希望这只是我错过的一些
  • 16字节三重DES解密无效密钥

    我有一个 Android 项目 其中从我的 Web 服务获取 Triple DES 加密的文本片段 我需要 Triple DES 解密 但是 我收到无效的关键异常 我的密钥已转换为十六进制格式 但出现错误 W System err java
  • 在 Redux 中重写状态

    在 redux 中 我知道状态是不可变的 当你创建新状态时 你实质上是用现有的新信息更新对象 然后完全重写状态 今天我有一个想法 我不知道它有多愚蠢 不断重写状态的计算成本是否昂贵 我知道这是 Redux 的主要范例之一 但我想知道从内存和
  • 在服务器 (PHP) 上验证客户端 (Javascript) 计算时的 DRY

    当我在服务器 PHP 上验证客户端 javascript 所做的计算时 我希望进行 DRY 我在服务器上进行验证 以防止恶意用户欺骗 javascript 但我在客户端上进行计算 以避免 AJAX 返回服务器进行验证时出现延迟和服务器压力
  • 如何使用 std::copy 打印用户定义的类型

    下面的代码非常适合打印 type 的值std string std vector
  • 什么是 NSNotification?

    有人能解释一下 NSNotificationCenter 的重要性吗 在哪里使用它们 NSNotificationCenter 与 AppDelegate 有什么区别 Apple 在 Cocoa 库中提供了一个观察者模式 称为 NSNoti
  • WPF 中的 Windows 窗体绘制等效事件

    我已使用 PAINT 事件在 Winows 表单应用程序的面板上绘制波浪 但是当使用它的WPF时 我没有找到任何相当于具有Paint Event的Panel的元素 谷歌也查了很多 但没什么用 好吧 我需要在 WPF 中绘制波形 因此建议使用