我有以下代码给一个未对接的浮动AvalonDock窗口最大化的能力:
class MaximizableDockableContent : AvalonDock.DockableContent
{
public MaximizableDockableContent()
: base()
{
base.StateChanged += MaximizableDockableContent_StateChanged;
}
private void MaximizableDockableContent_StateChanged(
object sender, RoutedEventArgs e)
{
MaximizableDockableContent mdc = (MaximizableDockableContent)sender;
if (mdc.State == DockableContentState.DockableWindow)
{
base.FloatingWindowSizeToContent = SizeToContent.WidthAndHeight;
FloatingDockablePane fdp = (FloatingDockablePane)base.Parent;
DockableFloatingWindow dfw = (DockableFloatingWindow)fdp.Parent;
//dfw.WindowState = WindowState.Maximized;
dfw.WindowStyle = WindowStyle.ThreeDBorderWindow;
dfw.ResizeMode = ResizeMode.CanResize;
//disable minimize button
ControlBox.SetHasMinimizeButton(dfw, false);
}
}
}
Run Code Online (Sandbox Code Playgroud)
如何为此添加Aero Snap功能?
我有一个非常大的图像 (600mb) 30000x30000,想将它加载到 wpf 图像控件中。
我可以使用 Windows 照片查看器观看此图像!
我将我的 testapp 设置为 64 位并使用以下代码。
var image = new BitmapImage();
image.BeginInit();
// load into memory and unlock file
image.CacheOption = BitmapCacheOption.OnLoad;
image.UriSource = uri;
image.EndInit();
imagecontrol.source = image;
Run Code Online (Sandbox Code Playgroud)
测试应用程序仅显示带有此大图像的白色屏幕。
100mb 和 7000x7000 等较小的文件正在工作。
我究竟做错了什么?Sry 我的英语不好,并提前致谢。
首先,我要感谢 Bitmiracle 提供的这个伟大的库。即使创建非常大的文件,内存占用也非常低。几天前,我遇到了一个问题,我想创建一个大于 4GB 的 tiff 文件。我成功创建了平铺 tiff 文件,但创建的超过 4GB 的平铺文件的颜色似乎以某种方式反转了。
这里是代码相关代码:
用法:
WriteTiledTiff("bigtiff.tiff",BitmapSourceFromBrush(new RadialGradientBrush(Colors.Aqua,Colors.Red), 256));
Run Code Online (Sandbox Code Playgroud)
方法:
public static BitmapSource BitmapSourceFromBrush(Brush drawingBrush, int size = 32, int dpi = 96)
{
// RenderTargetBitmap = builds a bitmap rendering of a visual
var pixelFormat = PixelFormats.Pbgra32;
RenderTargetBitmap rtb = new RenderTargetBitmap(size, size, dpi, dpi, pixelFormat);
// Drawing visual allows us to compose graphic drawing parts into a visual to render
var drawingVisual = new DrawingVisual();
using (DrawingContext context = drawingVisual.RenderOpen())
{ …
Run Code Online (Sandbox Code Playgroud) 在我的场景中,我想在我想在后台任务中渲染它之前冻结一个不变的BitmapCacheBrush.不幸的是我收到错误"这个Freezable不能被冻结".是否有任何解决方法或hacky方式冻结也不是freezable对象?也许可以通过反射设置正确的属性来达到这个目标?提前谢谢你们.
编辑:(我的示例代码请求)
public static class ext
{
public static async Task<BitmapSource> RenderAsync(this Visual visual)
{
var bounds = VisualTreeHelper.GetDescendantBounds(visual);
var bitmapCacheBrush = new BitmapCacheBrush(visual);
bitmapCacheBrush.BitmapCache = new BitmapCache();
// We need to disconnect the visual here to make the freezable freezable :). Of course this will make our rendering blank
//bitmapCacheBrush.Target = null;
bitmapCacheBrush.Freeze();
var bitmapSource = await Task.Run(() =>
{
var renderBitmap = new RenderTargetBitmap((int)bounds.Width,
(int)bounds.Height, 96, 96, PixelFormats.Pbgra32);
var dVisual = new DrawingVisual();
using (DrawingContext context = dVisual.RenderOpen()) …
Run Code Online (Sandbox Code Playgroud) 之后RenderTargetBitmap就太慢了。我尝试了一种不同的方法。不幸的是我的尝试没有成功。希望你们中的一些人能够弄清楚为什么这段代码不起作用。
var myPopup = new Popup();
var child = new Grid() { Background = new VisualBrush(myVisual)};
myPopup.StaysOpen = false;
myPopup.Child = child;
myPopup.IsOpen = false;
myPopup.Opened += (sender, args) =>
{
var source = ((HwndSource)PresentationSource.FromVisual(myPopup.Child));
var image = new Bitmap(1000,1000);
using (Graphics gr = Graphics.FromHwnd(source.Handle))
{
var ptr = gr.GetHdc();
using (Graphics g = Graphics.FromHdc(ptr))
{
g.DrawImage(image, new System.Drawing.Point(0, 0));
}
gr.ReleaseHdc(ptr);
}
//The image is just black...
image.Save("test.png");
myPopup.IsOpen = false;
};
myPopup.IsOpen = true;
Run Code Online (Sandbox Code Playgroud) 我有一个带有AmbientLight的3D场景.我想添加第二个Light(SpotLight)来用红色照射一个区域.不幸的是,AmbientLight比Spotlight亮得多,所以它不可见.
有人有想法吗?
提前致谢.
可以通过MouseRightButtonDown事件检测触摸并按住手势。不幸的是,直到我从屏幕上松开手指时,它才会触发。这来晚了!
有人有想法吗?提前致谢。
我看到WinRT RenderTargetBitmap能够通过"RenderAsync(visual);"异步呈现Visual.方法.不幸的是.net RendertargetBitmap 没有RenderAsync方法..net RenderTargetBitmap是否有任何变通方法或扩展,以允许WPF视觉效果的异步呈现?提前感谢您的帮助!
wpf ×7
c# ×4
.net ×1
3d ×1
aero ×1
async-await ×1
asynchronous ×1
avalondock ×1
brightness ×1
freezable ×1
gesture ×1
graphics ×1
image ×1
imaging ×1
libtiff.net ×1
light ×1
load ×1
maximize ×1
render ×1
spotlight ×1
tiff ×1
touch ×1
view ×1