小编mle*_*may的帖子

应用,提高触摸事件的性能

基本上,我有一个8000px到8000px的应用程序.我们可以放大以查看特定部分,例如收音机,或者我们可以缩小以查看所有内容.

汽车的每个部件都是一个控制器,我们可以用手指操作,双触摸或多点触控显示器.

我的问题是:对于操作控件,例如音量按钮,用户需要像现实生活中一样移动鼠标,因此使用圆形运动.使用鼠标,一切都很完美,它可以毫不拖延地立即响应.我使用OnMouseLeftButtonDown,OnMouseMove等.通过触摸,计算机似乎很难获得触摸位置并且存在巨大的延迟,尤其是当用户同时用2个手指移动2个不同的按钮时.我使用OnTouchDown,OnTouchMove等...

鼠标和触摸之间的唯一区别是当我们需要获取位置时,使用鼠标:(e是MouseButtonEventArgs)

Point currentPosition = e.GetPosition(this);
Run Code Online (Sandbox Code Playgroud)

使用Touch我使用:(e是TouchEventArgs)

Point currentPosition = e.GetTouchPoint(this).Position;
Run Code Online (Sandbox Code Playgroud)

在此之后的一切都是一样的.

我不知道是不是因为我在我的应用程序中有太多的控制权(超过5000我们可以操作,但当我们只放大2控制它是同样的事情)或因为它真的很难让计算机得到触摸事件的位置....

有人可以帮我弄这个吗?我需要找到一个消除滞后的解决方案.

我在NEC 2490WUXi2屏幕上使用Visual Studio 2010,Blend 4,.NET 4.0 Windows 7 64位7 Gb RAM Xeon 2.13 Ghz,2核,8线程屏幕:ELO技术

c# wpf performance multi-touch touch

13
推荐指数
1
解决办法
4435
查看次数

SharedResourceDictionary:在Blend中编辑资源

为了优化我的应用程序,我创建了一个SharedResourceDictionary.有了这个,我在运行时节省了大约250 MB的内存,所以它运行良好.

我的问题出在设计时,在Blend 4中,我无法访问我的资源.要修改模板(女巫在我的资源文件中),我通常右键单击我的控件,然后选择编辑模板 - >编辑当前,如下图所示:

在此输入图像描述

我需要修改我的模板,它比我的资源文件快100倍,找到好的...我有很多资源......

我的SharedResourceDictionary是这样实现的(在网上找到):

public class SharedResourceDictionary : ResourceDictionary
{
    /// <summary>
    /// Internal cache of loaded dictionaries 
    /// </summary>
    public static Dictionary<Uri, ResourceDictionary> _sharedDictionaries =
        new Dictionary<Uri, ResourceDictionary>();

    /// <summary>
    /// Local member of the source uri
    /// </summary>
    private Uri _sourceUri;

    /// <summary>
    /// Gets or sets the uniform resource identifier (URI) to load resources from.
    /// </summary>
    public new Uri Source
    {
        get
        {
            if (IsInDesignMode)
                return base.Source;

            return _sourceUri;
        }
        set
        { …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf performance xaml

9
推荐指数
1
解决办法
1612
查看次数

解决WPF应用程序的性能问题

我已经列出了所有可以帮助改善具有大量控件的非常复杂的应用程序中的性能的列表.如果你想加你的,欢迎你!

  • 如果您知道控件的大小,请删除"自动"并输入实际值,这样父级就不必解析所有子级以检查他需要的大小
  • 如果元素不需要是交互式的,则设置参数IsHitTestVisible = False
  • 冻结所有可能的对象
  • 使用静态资源而不是动态资源
  • 不要使用Ellipse对象,将Ellipse转换为Path
  • 如果可以使用TextBlock,请不要使用TextBox或Label
  • 尽可能使用Canvas而不是Grid
  • 没有FlowDocument
  • 虚拟化!VirtualizingStackPanel而不是StackPanel
  • 不要使用List,ObservableCollection更快
  • 使用Drawing库,它比Shapes库更快
  • 检查你的装订!如果绑定不起作用,则可能非常慢
  • 不要使用Visibility.Hidden,尽可能使用Visibility.Collapsed
  • DependencyProperty比INotifyPropertyChanged快3倍
  • StreamGeometry比PathGeometry快
  • 完成后清除事件处理程序!
  • 如果可以,请不要使用"对象不透明度"属性,使用其颜色不透明度
  • 检查您的应用程序是否为硬件渲染(第2层)
  • 尽可能减小图像的尺寸/质量
  • 渲染图像比渲染矢量更快!

我使用的工具:

  • WPF检查员
  • 史努比
  • WPFPerf套件
  • Visual Studio探查器
  • 适用于.NET的CLR Profiler

wpf performance blend

6
推荐指数
1
解决办法
1706
查看次数

触发@mention Autocomplete,如Facebook,Twitter和Google+

我一直试图在文本区域添加类似Facebook @tagged Friend name的内容.我一直在使用jquery ui auto-complete来完成这项工作,它工作得很好,除了我想要一些符号如@或〜来启动标签,我无法弄清楚如何.有人有想法吗?我正在像Facebook一样将它用于多个朋友标签.

jquery facebook jquery-ui-autocomplete

4
推荐指数
2
解决办法
5042
查看次数

方法指针

任何人都知道如何在msvc2010下编译这个示例代码?(据说在海湾合作委员会下编制)

class cmdLine;

struct cmdList 
{
   const char *c;
   const char *s;
   const char *h;
   void (cmdLine::*cmdFuncPtr)();
};

class cmdLine
{
   public:
     cmdLine();
     static cmdList myCmdList[];
     void test();
};

cmdLine::cmdLine()
{
}

void cmdLine::test()
{
}

cmdList cmdLine::myCmdList[] =
{
   {"xxx", "yyy", "zzzzz", &cmdLine::test},
   {"aaa", "bbb", "ccc", 0}
};

int _tmain(int argc, _TCHAR* argv[])
{
   cmdLine c;
   (c.myCmdList[0].*cmdFuncPtr) (); //error (why?)
} 
Run Code Online (Sandbox Code Playgroud)

我得到错误C2065:'cmdFuncPtr':未声明的标识符,不知道什么是错的?

c++ visual-studio-2010

1
推荐指数
1
解决办法
152
查看次数