日期:2014-05-20  浏览次数:21567 次

WPF中控件重绘的问题
最近开发WPF程序时 发现在拖动的时候闪烁比较严重,程序的背景是一副1280*720的图片,然后自绘了一个Canvas,界面采用Grid布局,其中有两个问题困扰了我:
  1:界面闪烁问题,所以请教一下WPF中的双缓冲实现。
  2:Grid中的自绘控件在窗口大小发生改变之后,并未重绘,而是停留在原来的位置。代码如下:
  meter = new Meter();
  grid.Children.Add(meter);
  meter.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
  meter.VerticalAlignment = System.Windows.VerticalAlignment.Center;
  Grid.SetColumn(meter, 16);
  Grid.SetRow(meter, 5);
  如果改变一下代码,将  
  meter.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
  meter.VerticalAlignment = System.Windows.VerticalAlignment.Center;
  去掉,则控件可以在正确位置上重绘。

于是,想请教一下:
  1: WPF中有没有类似于MFC中的OnPaint消息,invalid函数,如何监听窗口大小发生改变的事件。
  2: 如何避免界面闪烁。
谢谢
 

------解决方案--------------------
那你的重绘是怎么触发的

就是 onRender方法

和InvalidaVisual方法吧

我这2天在写一个自定义控件,没遇到你的问题