WPF怎么重绘窗体

如题所述

放到Convas里就好了
或者:
MyVisualHost visualHostIRBin = new MyVisualHost();
CanvasIRBin.Children.Add(MyVisualHost);

public class MyVisualHost : FrameworkElement
{
// 创建子元素的集合私有变量
private VisualCollection _children;
//构造函数中添加DrawingVisual对象 Mapping
public MyVisualHost(List<CL.DataMapping> listFileBODY,string Item)
{
_children = new VisualCollection(this);
_children.Add(CreateDrawingVisualRectangle(listFileBODY, Item));
//添加MouseLeftButtonUp事件处理器
this.MouseLeftButtonUp += new MouseButtonEventHandler(MyVisualHost_MouseLeftButtonUp);
this.MouseMove+=MyVisualHost_MouseMove;
}

private DrawingVisual CreateDrawingVisualRectangle(List<CL.DataMapping> listFileBODY, string Item)
{
DrawingVisual drawingVisual = new DrawingVisual();
// 获取DrawingContext以便于创建一个绘图上下文
DrawingContext drawingContext = drawingVisual.RenderOpen();
#region 绘制矩形阵列
for (int i = 0; i < listFileBODY.Count; i++) //遍历所有芯片
{
PosXCanvas = (listFileBODY[i].PosX - PosXmin) / PosXMinDvalue;//Canvas坐标
PosYCanvas = (listFileBODY[i].PosY - PosYmin) / PosYMinDvalue;//Canvas坐标
Rect rect = new Rect(new Point(PosXCanvas, PosYCanvas), new Size(1, 1));//坐标为原点,向下向右填充颜色。
ColorConverter ColorConverter=new System.Windows.Media.ColorConverter();

#region 根据Mapping项目,调用颜色
if (Item == "IR")
{
//Color color=
SolidColorBrush = new SolidColorBrush(Color.FromArgb(listFileBODY[i].IRcolor.A, listFileBODY[i].IRcolor.R, listFileBODY[i].IRcolor.G, listFileBODY[i].IRcolor.B));
}
if (Item == "VF")
{
SolidColorBrush = new SolidColorBrush(Color.FromArgb(listFileBODY[i].VF1color.A, listFileBODY[i].VF1color.R, listFileBODY[i].VF1color.G, listFileBODY[i].VF1color.B));

}
if (Item == "LOP")
{
SolidColorBrush = new SolidColorBrush(Color.FromArgb(listFileBODY[i].LOP1color.A, listFileBODY[i].LOP1color.R, listFileBODY[i].LOP1color.G, listFileBODY[i].LOP1color.B));
}
if (Item == "WLD")
{
SolidColorBrush = new SolidColorBrush(Color.FromArgb(listFileBODY[i].WLD1color.A, listFileBODY[i].WLD1color.R, listFileBODY[i].WLD1color.G, listFileBODY[i].WLD1color.B));
}
#endregion

drawingContext.DrawRectangle(SolidColorBrush, (Pen)null, rect);
}
#endregion
// 保存绘图上下
drawingContext.Close();
return drawingVisual;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-06-20
您好,请把问题描述清楚一点,以便给您更好的答复。

WPF怎么重绘窗体
放到Convas里就好了 或者:MyVisualHost visualHostIRBin = new MyVisualHost();CanvasIRBin.Children.Add(MyVisualHost);public class MyVisualHost : FrameworkElement { \/\/ 创建子元素的集合私有变量 private VisualCollection _children;\/\/构造函数中添加DrawingVisual对象 Mapping public MyVisualHost(List...

WPF中可否批量修改界面内容后一次性更新?
“我担心每次修改一个控件的属性时都将导致界面重绘,使得程序性能降低.”这个你不怎么需要担心,WPF会对所有的操作在工作线程排序之后再调度到绘制线程执行,基本上还是满足需求的。当然,如果是动画或者3D资源这种可能比较耗资源的操作,你也断定是这些东西耗资源了,这些所有从Freezable继承而来的类型都可以...

wpf如何判断在其它操作时,重绘使用禁止
1、解决Window Handle问题 在Windows GDI或WinForm开发中复杂的GUI应用程序,会使用的大量的控件,如Grid等。而每个控件或Grid cell都是一个小窗口,会使用一个Window handle,尽管控件厂商提供了很多优化办法,但还是会碰到Out of Memory或"Error Create Window handle",而导致程序退出。WPF彻底改变了控件...

C#wpf应用程序和创建一个窗体程序有什么区别?
都是做界面的东西 wpf是调用direct 直接用显卡绘图 支持3d等,性能高,做的界面漂亮 而且wpf用xaml语言写界面就跟写网页一样 实现各种半透明等特效方便。winform是调用GDI+绘图,如果各种特效实现起来困难 需要手工GDI重绘,各种特效实现起来麻烦。但是对于老程序员因为熟悉GDI所以一时割舍不下。还有因为WPF...

我又来了,求教WPF窗口边框的问题,设置可调的无边框\/窄边框窗口_百度知 ...
wpf无边窗口是个麻烦事情,只有做了的人才知道,首先你要实现处理WM_NCHitTest消息,根据鼠标在窗体的位置返回可调的返回值,这样就能调整或者拖动窗口,然后事情还没完,还要调整最大化窗口时的大小,因为最大化的时候右边和下边都少了一块(和样式有关),然后还没完,如果你这个无边窗口是个子窗口,...

c#重绘复选框checkBox的问题
那个框框大小不能改变,但是框框和显示的文字 整体大小是可以调的,改变属性borderwidth值就好了。

WPF的图形呈现
智能重绘使用保留模型图形的最大好处之一就是 WPF 可以高效率地优化需要在应用程序中重绘的内容 即使您有一个具有各种不透明度的复杂场景 通常也不必编写特殊用途的代码来优化重绘功能 请将智能重绘功能与 Win 编程进行比较 在后者中 可以通过最小化更新区域中的重绘量来尽力优化应用程序 向量图形WPF 使用向量图形作为...

[WPF] 在Canvas上绘制网格线
+ Polyline就可以基本的轨迹功能。为使轨迹不过于单调增加了网格线背景。学习WPF: 第6个月。网格线的绘制主要依赖窗口的宽高和设定的间隔计算,画多少行,画多少列,画多长,画多高。支持窗口缩放只要是监听 SizeChanged 的回调事件,窗口尺寸变化,实现重绘和更新。封装成工具类, 源码 。

WPF的自定义控件怎样添加Click事件
FrameworkPropertyMetadataOptions.AffectsRender);这样当该属性发生变化时系统会考虑重绘该控件.另外元数据中还保护很多内容,比如默认值,数据验证,数据变化时的回调函数,是否参与属性"继承"等.然后,我们将该依赖属性包装成普通属性: [Description("获取或设置当前日期和时间")] [Category("Common Properties")] public ...

请问C# winform如何实现将一个不规则形状的图片弄成按键?
您可以使用自定义控件来实现这种效果。首先,创建一个继承自System.Windows.Forms.Control的类,然后重写其OnPaint方法来绘制不规则形状的图片。然后,通过在控件上附加鼠标事件处理器,来切换显示图形A和图形B。以下是一个简单的代码示例:using System;using System.Drawing;using System.Windows.Forms;public...

相似回答