问题标签 [writeablebitmapex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
604 浏览

c# - 使用 WriteableBitmapEx 实时绘制一组流畅的圆

我有一个 WriteableBitmap 对象,我将 .jpg 图像加载到该对象中并将其显示在图像控件中。现在我希望能够让用户用一个半透明的小刷子在该图像上绘图。

现在我正在处理 MouseDown 和 MouseMove 事件,以便在鼠标在图像上的坐标每次变化时绘制一个半透明的小圆圈:

不过,这显然刷新得不够快 - 给我留下了一组点(除非用户移动鼠标非常非常慢)。

我的临时解决方案是从一个点画线到另一个点,并在每个 MouseMove 事件上更新两个点 - 曲线是一致的,但只有一个像素宽,看起来不太好。

我解决这个问题的最佳方法是什么?

0 投票
1 回答
4223 浏览

c# - WriteableBitmap(Ex) 与 DrawingContext 的性能

我正在 WPF 中构建一个自定义 UI 框架,我基本上尽可能多地抛弃内置布局系统和控件。到目前为止,我一直在UIElement直接分支,但由于我已经在进行测量、安排和渲染自己,我想我可以通过“更接近金属”(尤其是当它来布局/渲染)。留在托管代码中并且不害怕自己做肮脏的工作时有多接近?

我现在正在玩弄一个原型概念,我只有一个从 UIElement 继承的元素:一个Root对象,类似于一个剥离的对象Canvas,它“托管”我的布局引擎的其余部分并将相关的IInputElement好处引入其中。从那时起,所有元素都将是完全自定义的对象,不继承自 WPF 中的任何内容,而是直接呈现到DrawingContextRoot 中(在其OnRender方法中)。

现在我想知道拥有一个根元素并手动绘制它的相对性能,例如为了方便WriteableBitmap使用WriteableBitmapEx 。没有抗锯齿不是问题,自定义命中测试系统也不是问题。

我的想法主要是 WriteableBitmap(Ex) 没有任何 GPU 加速增益的特权,因此当需要重新绘制/转换大面积区域时会[非常]慢。

不过,我确实对“引擎中的基于像素的渲染引擎”有其他需求,因此我仍然对此感兴趣。

有什么见解吗?

编辑:在这种情况下,SharpDX 呢?也许一旦我这样做了,我还不如去使用像 SharpDX 这样的 DirectX 包装器的 WinForms 解决方案(..or.. 我想我真正应该做的是注册整个 C++ enchilada,但不幸的是我没有有时间在事情中开始学习)..

0 投票
1 回答
1922 浏览

c# - 如何在 Windows Store 应用和 C# 中裁剪 WriteableBitmap 的旋转部分

在 Windows 应用商店应用程序中,我想裁剪 WriteableBitmap 的旋转矩形部分,如下图中的案例 2。

图片

  • 我有矩形的 P0、宽度、高度和 P1 和旋转角度。
  • 旋转基于每个矩形的中心

我正在使用WriteableBitmapEx.WinRT中提供的 Crop 扩展方法进行裁剪。

在案例 1 中,我正在执行以下操作:

但是当轮换到位时,我不知道应该应用什么计算来像案例 2 那样进行裁剪。

你们中有人愿意帮忙吗?

谢谢!

0 投票
1 回答
1040 浏览

c# - Alpha 通道无法按预期使用 WriteableBitmap

我当前的代码是将一个小的 Pbgra32 位图粘贴到一个更大的 Pbgra32 位图上。工作正常。我现在想做的是使那个较小的部分透明。为此,在 blit 之前,我将较小的一个传递给一个方法,该方法应该编辑每个像素,方法是单独保留 RGB 值,同时将 0x7F 写入每个像素的 A 值。

然而,我得到的不是 50% 透明的图像,而是一个灰色的正方形。我究竟做错了什么?

0 投票
0 回答
343 浏览

c# - WriteableBitmap.Lock() 抛出 AccessViolationException

好的,所以我有一个通过 WriteableBitmapEx 开源库大量使用 WriteableBitmap 的应用程序。有时,调用 WriteableBitmap.Lock() 很少(并且不确定导致的确切条件)会引发 AccessViolationException。

.Lock() 的调用代码仅在位图尚未被锁定时才会锁定位图。许多锁定/解锁可以快速连续调用,但绝不会在模式 lock-lock-unlock 中调用,只有 lock-unlock-lock-unlock。我可以确认

任何想法是什么原因造成的?MSDN上似乎没有任何内容表明 WriteableBitmap.Lock() 应该抛出 AccessViolationException!

在此处输入图像描述

0 投票
0 回答
922 浏览

c# - 提高 WriteableBitmap 性能

我正在做一个项目,我需要每毫秒绘制N一次椭圆,where和.X0 <= N <= 10^55 <= X <= 500

我开始使用 WPF,以及它的相关控件,例如Canvas用于视口的Ellipse控件和用于椭圆的控件。我将省略号存储在一个列表中,并且:

  • 每次椭圆的数量增加时,我都会在列表中添加一个新的椭圆。
  • 每次存储的椭圆数myViewport.Children少于myListOfEllipses.Count我将这些椭圆添加到我的视口时,我都会从视口中删除多余的椭圆而不将它们从我的列表中删除。
  • 对于每个椭圆,我计算新位置并使用Canvas.SetLeftandCanvas.SetTop方法。

性能相当不错,但是X设置为最小值N大于1000时会出现减速。

我考虑过使用DrawingVisuals,但我认为绘制和显示位图也更快。因此,我决定将我的视口替换为具有和使用库的Image控件。SourceWriteableBitmapWriteableBitmapEx

  • 每次我使用myBitmap.Clear(Colors.White).
  • 每次我使用myBitmap.FillEllipse(...).

好吧,问题是后一种方式比前者慢得多。这怎么可能?我哪里错了?如何提高位图的性能?

0 投票
1 回答
1300 浏览

c# - 在 windows phone 上模糊图像

我正在使用 WriteableBitmapEX 库试图在 Windows Phone 8 上模糊位图图像 我试过这段代码

但是在该行有一个例外“对象引用未设置为对象的实例”WriteableBitmap wbm = new WriteableBitmap(img1);

为什么这不起作用?

0 投票
1 回答
751 浏览

windows-8 - How to save a grid as a bitmap Image in the local storage in windows 8

I am very new to Windows 8 application development. I am developing an application which requires to save a grid as Bitmap Image in local storage. I have tried by using writable bitmap but i didn't get the solution.

Then I searched for the samples but I got the answer as a 'Not possible'. But in some answers I found that By using 'WriteableBitmapEx' we can do that. But I do not know how to implement this by using this library. If any one knows about that please reply me.

Thanks in advance.

EDITED.

C# code.

0 投票
0 回答
804 浏览

image - 如何在 Windows Phone 8 应用程序中调整图像大小?

如何在不损失质量的情况下使用 C# 在 windows phone 8.0 应用程序中调整图像大小并显示完整图像

我做了什么,

我的 XAML 代码:


我的 C# 代码


原图图片实际大小为38MB,尺寸10240x6400,高:10240,宽:6400

我得到的结果如下图

在此处输入图像描述

0 投票
1 回答
857 浏览

windows-runtime - 如何在 WinRT 中使用 WriteableBitmapEx 从图像中的点获取像素颜色?

我正在将我当前的 (Silverlight) WP8.0 应用程序移植到通用 Windows 应用程序。在这个应用程序中,我有一个控件,允许用户使用自定义拨号控件。当表盘停止时,应用程序应该从该特定点(和底层图像)获取像素颜色。

在 WP8.0 中,我曾经这样做过:

ColorWheelImage 在 XAML 中。

在 WinRT 中,WriteableBitmap 仅支持new WriteableBitmap(int pixelWidth, int pixelWidth)而不像 Silverlight 中那样设置图像。

我该如何解决这个问题..我似乎无法弄清楚:(!

谢谢,尼尔斯