我正在使用Microsoft Blend构建Windows Presentation Foundation控件.
当我通过按下鼠标左键离开我的控件时,不会引发MouseLeave-Event.为什么不?
我正在寻找一种方法来阻止WPF模糊我的图像.我希望我的应用程序在高DPI显示器上看起来很好,所以我创建了96x96px的图标以显示大小为32x32.
google中有很多内容可供查找,甚至在stackoverflow上也有一些关于此的主题.总结他们说:启用属性UseLayoutRounding
并设置RenderOptions.BitmapScalingMode
为HighQuality
.不幸的是,这对我来说并不适用 - 图像看起来仍然非常模糊.然后我在具有更高DPI aaaand-WOW的笔记本电脑上测试了我的应用程序.图像非常清晰.
我唯一的解决方案是创建一个自定义控件,将ImageSource转换为System.Drawing.Bitmap,在那里重新调整它以匹配图像尺寸并将其转换回WPF ImageSource.显然不是完美的解决方案!
所以问题是:为什么在低dpi显示屏上看我的图像模糊?我不知道是什么导致了这一点,希望somone有一个想法来解决这个问题.
这里有一些我发现的最有用的资源:
编辑:
这里要求的是转换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) 我用我的OpenGL程序观察一个奇怪的现象,该程序是用C#/ OpenTK/core-profile编写的.当从具有~1M顶点的高度图显示mandelbrot数据时,性能根据我的视图矩阵的比例值而不同(它是正交的,所以我需要比例).使用VBO渲染数据.渲染过程包括光照和阴影贴图.
我唯一的猜测是着色器中的某些内容在低比例值上出现"错误"并且存在一些错误处理.有什么提示吗?
例子:
我创建了一个自定义控件(继承自UserControl),其中包含一些控件(标签,文本框,滑块),并在Designer中为它指定了一个supertooltip(来自devComponents dotnetbar;与普通相同的问题;检查图片).
但工具提示没有出现.在"普通"控件上它可以工作,所以这是自定义控件的问题.
知道什么是错的吗?
编辑:这是一个示例:下载
在制作样品时,我认为我发现了失败.如果鼠标悬停在父级上,则工具提示才会出现.可能?如果是:任何想法如何解决?
是否有可能阻止文本块调整其父级的大小?我有一个包含大量文本的文本块,我希望它包装,但不是为了扩大父母的大小.父级的大小可以是变量.问候托马斯
我有与这里提到的相同的样本.快速结束: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)