小编fre*_*uin的帖子

WPF Mousedown =>没有MouseLeave事件

我正在使用Microsoft Blend构建Windows Presentation Foundation控件.

当我通过按下鼠标左键离开我的控件时,不会引发MouseLeave-Event.为什么不?

wpf mouse events

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

WPF模糊图像

我正在寻找一种方法来阻止WPF模糊我的图像.我希望我的应用程序在高DPI显示器上看起来很好,所以我创建了96x96px的图标以显示大小为32x32.

google中有很多内容可供查找,甚至在stackoverflow上也有一些关于此的主题.总结他们说:启用属性UseLayoutRounding并设置RenderOptions.BitmapScalingModeHighQuality.不幸的是,这对我来说并不适用 - 图像看起来仍然非常模糊.然后我在具有更高DPI aaaand-WOW的笔记本电脑上测试了我的应用程序.图像非常清晰.

我唯一的解决方案是创建一个自定义控件,将ImageSource转换为System.Drawing.Bitmap,在那里重新调整它以匹配图像尺寸并将其转换回WPF ImageSource.显然不是完美的解决方案!

低DPI显示示例(96dpi) 高DPI显示示例(~122dpi)

所以问题是:为什么在低dpi显示屏上看我的图像模糊?我不知道是什么导致了这一点,希望somone有一个想法来解决这个问题.

这里有一些我发现的最有用的资源:

  1. http://blogs.msdn.com/b/dwayneneed/archive/2007/10/05/blurry-bitmaps.aspx
  2. http://www.nbdtech.com/Blog/archive/2008/11/20/blurred-images-in-wpf.aspx
  3. http://www.hanselman.com/blog/BeAwareOfDPIWithImagePNGsInWPFImagesScaleWe​​irdOrAreBlurry.aspx
  4. 禁用WPF图像上的抗锯齿功能

编辑:

这里要求的是转换ImageSource的代码.有一些方法调用没有包括在内,但你可以通过谷歌快速找到它们.

// Calculate the conversion factor.
float dpi = WpfImageHelper.GetCurrentDPI(this);
float factor = dpi / 96f;
int width = (int)Math.Round(this.image.ActualWidth * factor);
int height = (int)Math.Round(this.image.ActualHeight * factor);

// Create bitmaps.
Bitmap oldBitmap = WpfImageHelper.ToWinFormsBitmap2((BitmapSource)this.Source);
Bitmap newBitmap = new Bitmap(width, height, System.Drawing.Imaging.PixelFormat.Format32bppArgb);

// Draw the new bitmap. Use high-quality interpolation mode.
using (Graphics g = Graphics.FromImage(newBitmap))
{
    g.InterpolationMode = InterpolationMode.HighQualityBicubic; …
Run Code Online (Sandbox Code Playgroud)

c# wpf image bitmap blurry

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

OpenGL - 具有高规模值的低性能

我用我的OpenGL程序观察一个奇怪的现象,该程序是用C#/ OpenTK/core-profile编写的.当从具有~1M顶点的高度图显示mandelbrot数据时,性能根据我的视图矩阵的比例值而不同(它是正交的,所以我需要比例).使用VBO渲染数据.渲染过程包括光照和阴影贴图.

我唯一的猜测是着色器中的某些内容在低比例值上出现"错误"并且存在一些错误处理.有什么提示吗?

例子:

例1 例2

c# opengl performance scale opentk

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

自定义控件的工具提示

我创建了一个自定义控件(继承自UserControl),其中包含一些控件(标签,文本框,滑块),并在Designer中为它指定了一个supertooltip(来自devComponents dotnetbar;与普通相同的问题;检查图片).

但工具提示没有出现.在"普通"控件上它可以工作,所以这是自定义控件的问题.

知道什么是错的吗?

编辑:这是一个示例:下载

在制作样品时,我认为我发现了失败.如果鼠标悬停在父级上,则工具提示才会出现.可能?如果是:任何想法如何解决?

替代文字

c# user-controls tooltip winforms

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

防止父母被孩子调整大小

是否有可能阻止文本块调整其父级的大小?我有一个包含大量文本的文本块,我希望它包装,但不是为了扩大父母的大小.父级的大小可以是变量.问候托马斯

wpf layout

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

WPF关闭子 - 关闭父窗口

我有与这里提到的相同的样本.快速结束:MainWindow在最后一个子窗口关闭时关闭.

我的问题:我无法用所描述的解决方案解决我的问题.我无法制作一个可以进行的程序.只有我的一个更大的前卫.也许有人有想法或知道任何进一步的步骤.

感谢阅读 - 托马斯

根据要求,这里有一些代码:这是MainWindow中的部分:

bool editAfterSearch = false;
Movie selectedMovie = (Movie)this.listView.SelectedItem;
Movie backup = (Movie)selectedMovie.Clone();            

if (new OnlineSearchWindow().EditMovieViaOnlineSearch(ref selectedMovie, out editAfterSearch))
{
    this.coverFlow.Update(selectedMovie);
}
Run Code Online (Sandbox Code Playgroud)

这就是ChildWindow的一部分:

public bool EditMovieViaOnlineSearch(ref Movie preset, out bool editAfter)
{
    this.exitWithOk = false;
    this.editMovieAfterSearch = false;

    this.tbx_SearchTerm.Text = preset.Title;
    this.linkedMovie = preset;

    this.ShowDialog();

    editAfter = editMovieAfterSearch;

    if (this.exitWithOk)
    {
        this.linkedMovie.CloneOnlineInformation(ref preset);
        preset.Bitmap = this.linkedMovie.Bitmap;

        return true;
    }
    else
    {
        return false;
    }
}
Run Code Online (Sandbox Code Playgroud)

wpf childwindow mainwindow

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