none
wpf当grid包含几个Usercontrol时,在最顶上的usercontrol(其他usercontrol不隐藏)绘制出现延迟,PAD环境下 RRS feed

  • 问题

  •  <Grid>
      <UserControl1>
      <UserControl2>
      <UserControl3>
       <Canvas x:Name="WhiteCanvas" Background="GreenYellow"
                    StylusDown="WhiteCanvas_OnStylusDown"
                    StylusMove="WhiteCanvas_OnStylusMove"
                    StylusUp="WhiteCanvas_OnStylusUp">
              <Image x:Name="WhiteboardImage"></Image>
         </Canvas>
      </Grid>
    _plotBitmap.Lock();
     System.Drawing.Imaging.PixelFormat.Format32bppArgb,
                //    _plotBitmap.BackBuffer);
    
                using (var bitmapGraphics = System.Drawing.Graphics.FromImage(_bitmap))
                {
                    bitmapGraphics.SmoothingMode = SmoothingMode.HighSpeed;
                    bitmapGraphics.InterpolationMode = InterpolationMode.NearestNeighbor;
                    bitmapGraphics.CompositingMode = CompositingMode.SourceCopy;
                    bitmapGraphics.CompositingQuality = CompositingQuality.HighSpeed;
                    if (_listPoint.Count < 2)
                    {
                        return;
                    }
    
                    for (int i = 0; i < _listPoint.Count - 1; i++)
                    {
                        var pen = new System.Drawing.Pen(System.Drawing.Pens.Red.Brush, 4);
                        bitmapGraphics.DrawLine(pen, (int)_listPoint[i].X, (int)_listPoint[i].Y, (int)_listPoint[i + 1].X, (int)_listPoint[i + 1].Y);
                    }
                }
                _plotBitmap.AddDirtyRect(new Int32Rect(0, 0, _plotBitmap.PixelWidth, _plotBitmap.PixelHeight));
    使用以上方法绘制。UserControl1、UserControl2、UserControl3布局均是默认生成出来的,只有一个Grid,当添加的越多时,绘制越延迟

    2014年4月15日 0:31

全部回复

  • WPF渲染机制是你XAML的视觉顺序的。从下到上。而且WPF使用Graphics 绘制而不是GDI,也是比较耗资源和显卡。这些都有可能是原因。推荐楼主一套工具 WPF Performance Suite ,这套工具可以分析出你WPF渲染时候各控件消耗资源情况,也有可能是楼主某部分控件属性或者逻辑问题。

    希望采纳。谢谢

    • 已标记为答案 skczjun 2014年4月16日 1:05
    • 取消答案标记 skczjun 2014年4月16日 1:32
    2014年4月15日 4:50
  • WPF Performance Suite

    win8 sdk没有这个工具,win7 sdk的因为我系统是win8的也装不上

    2014年4月16日 0:52
  • 在官网下sdk没装上,我在其他网站直接下了wpfperf.msi装上了
    2014年4月16日 1:05
  • 我的wpf程序是win8下vs2012开发的,我使用perforator工具SelectProcess或LaunchProcess均无法Attach到程序进程,该如何做呢
    • 已编辑 skczjun 2014年4月16日 1:35 修改
    2014年4月16日 1:34
  • 能给个最新版的wpfperf吗
    2014年4月16日 1:42
  • 能给个最新版的wpfperf吗

    你好,

    你可以从以下网址下载安装:

    x86 version:
    http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKPerformanceToolKit/wpt_x86.msi
    x64 version:
    http://download.microsoft.com/download/A/6/A/A6AC035D-DA3F-4F0C-ADA4-37C8E5D34E3D/setup/WinSDKPerformanceToolKit_amd64/wpt_x64.msi

    如果不可以正常工作,请下载此补丁:http://www.microsoft.com/en-us/download/confirmation.aspx?id=21042


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月16日 4:50
    版主
  • 你好 wpfperf只对.net3.5的wpf有效吗?我使用vs2010目标平台.net4.0.3编译出来的wpf程序无法select,切换回目标平台.net3.5才可以正常使用
    2014年4月18日 5:34
  • 你好 wpfperf只对.net3.5的wpf有效吗?我使用vs2010目标平台.net4.0.3编译出来的wpf程序无法select,切换回目标平台.net3.5才可以正常使用

    你好,我这边目前只有VS2012和VS2013的环境,是可以使用的,没有问题,请尝试安装补丁

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月18日 10:34
    版主
  • 你好 wpfperf只对.net3.5的wpf有效吗?我使用vs2010目标平台.net4.0.3编译出来的wpf程序无法select,切换回目标平台.net3.5才可以正常使用


    你好,我这边目前只有VS2012和VS2013的环境,是可以使用的,没有问题,请尝试安装补丁

    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    http://www.microsoft.com/en-us/download/confirmation.aspx?id=21042

    补丁是这个吗?这个安装过了,仍然不行,跟vs2012 2013没关系,项目的平台选择为.net4.0编译出来的就是无法使用wpfperf来Attach


    • 已编辑 skczjun 2014年4月21日 2:41 修改
    2014年4月21日 2:41
  • 你好,

    经过我的测试,发现有时候这个工具可以在选择.NET4.0编译的项目,有时候不可以,你可以尝试这样操作:

    1. 打开 WPF Performance Suite

    2. 打开你需要监控的WPF程序

    3. Attach


    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2014年4月21日 8:57
    版主