首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏林德熙的博客

    WPF 如何在 WriteableBitmap 写文字

    最近看到WPF 使用不安全代码快速从数组转 WriteableBitmap 可以快速从数组转 WriteableBitmap 所以就让他画一些元素,但是发现元素有文字就没法了。 本文告诉大家如何在 WriteableBitmap 把文字画上去。 截图 这个方法是从 WriteableBitmapEx看到的,可以在页面创建一个 TextBlock 让他来显示文字,然后使用截图获得文字,把图片画到 WriteableBitmap 就好。 先创建一个对象 var wb = new WriteableBitmap((int) 宽, (int) 高, 96, 96, PixelFormats.Pbgra32, null); 然后对文字截图 image = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null); CopyFrom(

    2K10发布于 2018-09-19
  • 来自专栏我和未来有约会

    Silverlight 3.0 中的 WriteableBitmap

    Silverlight 3.0 中的 WriteableBitmap 尽管矢量图形非常的强大但是在有些情况下还是需要用到位图,因为他们在运行时能得到更高的执行效率和渲染效果。 在Silverlight 3.0中添加了一个新的图形类,WriteableBitmap。 使用WriteableBitmap <Grid x:Name="LayoutRoot"> <Image x:Name="optImage" Margin="271,8,0,0" VerticalAlignment 并且把需要呈现位图的元素赋值给WriteableBitmap WriteableBitmap wb = new WriteableBitmap(myMediaElement, null 转Jpg http://rhlopez.com/blog/post/2009/07/17/Silverlight-3-WriteableBitmap-to-Jpg.aspx WriteableBitmap

    90480发布于 2018-01-16
  • 来自专栏林德熙的博客

    WPF 如何在 WriteableBitmap 写文字

    最近看到WPF 使用不安全代码快速从数组转 WriteableBitmap 可以快速从数组转 WriteableBitmap 所以就让他画一些元素,但是发现元素有文字就没法了。 本文告诉大家如何在 WriteableBitmap 把文字画上去。 截图 这个方法是从 WriteableBitmapEx看到的,可以在页面创建一个 TextBlock 让他来显示文字,然后使用截图获得文字,把图片画到 WriteableBitmap 就好。 先创建一个对象 var wb = new WriteableBitmap((int) 宽, (int) 高, 96, 96, PixelFormats.Pbgra32, null); 然后对文字截图 image = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null); CopyFrom(

    66510编辑于 2022-08-04
  • 来自专栏林德熙的博客

    WPF 使用 Skia 绘制 WriteableBitmap 图片

    那么如何在 WPF 使用 SkiaSharp 绘制出 WriteableBitmap 在 WPF 中使用? writeableBitmap = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, BitmapPalettes.Halftone256Transparent 的方法,其实 Skia 在 WriteableBitmap 绘制的本质就是这样 在开始绘制之前需要调用 WriteableBitmap 的 Lock 方法,接着在绘制完成之后,需要调用 AddDirtyRect 和 Unlock 方法 大概的绘制代码如下 private void UpdateImage(WriteableBitmap writeableBitmap) { int width = (int)writeableBitmap.Width, height = (int)writeableBitmap.Height

    2.7K20发布于 2020-09-02
  • 来自专栏林德熙的博客

    win10 uwp 读取保存WriteableBitmap 、BitmapImage 保存 WriteableBitmap 到文件从文件读 WriteableBitmapIma

    我们在UWP,经常使用的图片,数据结构就是 BitmapImage 和 WriteableBitmap。关于 BitmapImage 和 WriteableBitmap 区别,我就不在这里说。 主要说的是 BitmapImage 和 WriteableBitmap 、二进制 byte 的互转。 保存 WriteableBitmap 到文件 private static async Task SaveWriteableBitmapImageFile(WriteableBitmap image ,如果是WriteableBitmap ,那么直接转换 WriteableBitmap 转byte[] bitmap.PixelBuffer.ToArray(); Image 转byte[] 如果我们的 //WriteableBitmap 转 byte[] private async Task<string> ToBase64(WriteableBitmap bitmap) { var bytes

    2.4K10发布于 2018-09-18
  • 来自专栏dino.c的专栏

    silverlight3新增功能2:WriteableBitmap

          来学习WriteableBitmap吧。看看參考文檔中的描述: 使用 WriteableBitmap 类基于每个框架来更新和呈现位图。 首先摆一个TextBlock,把它做成图片,代码如下: WriteableBitmap bitmap = new WriteableBitmap(text, null); img.Source = bitmap 实际应用一:       WriteableBitmap其中一个很激动人心的应用是,终于可以保存用SL生成的图表了。 WriteableBitmap可以将对象的Clip、Effect、Opacity、OpacityMask、Children呈现出来,连Projection也不例外。 本来打算用这种方法获取对象的截图:       WriteableBitmap bitmap = new WriteableBitmap(rectangle, rectangle.RenderTransform

    62440发布于 2019-01-18
  • 来自专栏林德熙的博客

    WPF 自己封装 Skia 差量绘制控件

    只是稍微有点 在使用 WriteableBitmap 作为 Skia 的承载,就需要再来一步,让 WriteableBitmap 在界面绘制。 ); _writeableBitmap = writeableBitmap; var skImageInfo = new SKImageInfo() WriteableBitmap _writeableBitmap = null! > draw) { var writeableBitmap = _writeableBitmap; writeableBitmap.Lock ); writeableBitmap.Unlock(); } 也就是调用 Draw 方法,传入具体的绘制逻辑就可以完成绘制了。

    1.4K30发布于 2020-09-10
  • 来自专栏林德熙的博客

    WPF 如何在 WriteableBitmap 写文字 截图win form 方法

    最近看到WPF 使用不安全代码快速从数组转 WriteableBitmap 可以快速从数组转 WriteableBitmap 所以就让他画一些元素,但是发现元素有文字就没法了。 本文告诉大家如何在 WriteableBitmap 把文字画上去。 截图 这个方法是从 WriteableBitmapEx看到的,可以在页面创建一个 TextBlock 让他来显示文字,然后使用截图获得文字,把图片画到 WriteableBitmap 就好。 先创建一个对象 var wb = new WriteableBitmap((int) 宽, (int) 高, 96, 96, PixelFormats.Pbgra32, null); 然后对文字截图 image = new WriteableBitmap(width, height, 96, 96, PixelFormats.Bgra32, null); CopyFrom(

    84720发布于 2019-03-13
  • 来自专栏林德熙的博客

    WPF 修改图片颜色

    ,一个图片的像素就是writeableBitmap.PixelWidth * writeableBitmap.PixelHeight 。 (new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)); writeableBitmap.Unlock (new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)); writeableBitmap.Unlock (); writeableBitmap = new WriteableBitmap(writeableBitmap.PixelWidth, writeableBitmap.PixelHeight , 96, 96, writeableBitmap.Format, writeableBitmap.Palette); writeableBitmap.Lock

    1.9K20编辑于 2022-08-04
  • 来自专栏林德熙的博客

    WPF 通过 WriteableBitmap 实现 TAGC 低光增强效果算法

    我从博客园找到了 Imageshop 大佬记录的伊拉克团队的TAGC(低光增强效果)算法实现,通过阅读大佬的博客和对应的论文,基于 WPF 的 WriteableBitmap 实现 TAGC 低光增强效果算法 summary> public class TuningAdaptiveGammaCorrectionAlgorithm { public static unsafe void Enhancement(WriteableBitmap sourceBitmap, WriteableBitmap targetBitmap) { if (sourceBitmap.Format ! 完全的从传入的图片文件路径,经过 TAGC 算法,将输出的 WriteableBitmap 给到 DestImage 控件的 Source 的代码如下 private void Enhancement (formatConvertedBitmap); var targetBitmap = new WriteableBitmap(sourceBitmap.PixelWidth, sourceBitmap.PixelHeight

    33810编辑于 2025-09-17
  • 来自专栏林德熙的博客

    WPF 修改图片颜色

    ,一个图片的像素就是writeableBitmap.PixelWidth * writeableBitmap.PixelHeight 。 (new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)); writeableBitmap.Unlock (new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)); writeableBitmap.Unlock (); writeableBitmap = new WriteableBitmap(writeableBitmap.PixelWidth, writeableBitmap.PixelHeight , 96, 96, writeableBitmap.Format, writeableBitmap.Palette); writeableBitmap.Lock

    4K10发布于 2018-09-19
  • 来自专栏林德熙的博客

    WPF 使用不安全代码快速从数组转 WriteableBitmap

    本文告诉大家一个快速的方法,直接把数组转 WriteableBitmap 先来说下以前的方法,以前使用的是 BitmapSource ,这个方法是大法官方提供的。 使用不安全代码转换是把数组直接复制到WriteableBitmap,请看使用不安全代码将 Bitmap 位图转为 WPF 的 ImageSource 以获得高性能和持续小的内存占用 - walterlv ,这里讲了如何从 Bitmap 转 WriteableBitmap ,于是下面只需要把数组转 Bitmap 就可以了。 如果已经拿到了数组,知道数组的存放,那么就可以直接把数组复制到 WriteableBitmap 就可以显示。 这就是PixelFormat指定的类型,可以使用Bgra32或者其他的格式,不过指定了格式就需要数组存放和指定一样 因为没有直接从数组转 WriteableBitmap 所以需要先把数组转 Bitmap

    1.2K10发布于 2018-09-19
  • 来自专栏walterlv - 吕毅的博客

    WPF 高性能位图渲染 WriteableBitmap 及其高性能用法示例

    ---- 如何使用 WriteableBitmap 创建一个新的 WPF 项目,然后我们在 MainWindow.xaml 中编写一点可以用来显示 WriteableBitmap 的代码: 1 2 3 4K 脏区 虽然我们看不到任何可变的修改,不过 WriteableBitmap 可不这么认为。 ) 另外,如果你有一些特殊的应用场景,可以适当调整下自己写代码的策略: 如果你希望有较大脏区的情况下降低 CPU 占用,可以考虑降低 WriteableBitmap 脏区的刷新率 如果你希望 WriteableBitmap 有较低的渲染延迟,则考虑减小脏区 WriteableBitmap 渲染原理 在调用 WriteableBitmap 的 AddDirtyRect 方法的时候,实际上是调用 MILSwDoubleBufferedBitmap.AddDirtyRect ,这是 WPF 专门为 WriteableBitmap 而提供的非托管代码的双缓冲位图的实现。

    3.2K70编辑于 2023-10-22
  • 来自专栏菩提树下的杨过

    silverlight:如何在图片上挖个洞?

    path合并组成复杂的路径 将合成后的复杂路径与win7图片同时选中,然后生成剪切路径 这样我们就得到了一个不规则的图片轮廓(当然这里演示的去掉不规则部分,反过来就是挖洞) 二、用代码挖洞 原理:先用WriteableBitmap Index_Loaded);         } void Index_Loaded(object sender, RoutedEventArgs e)         {             WriteableBitmap  wb = new WriteableBitmap(win7, null); this.imgMask.Source = wb;             win7.Visibility = Visibility.Collapsed ;             GenMask(wb);         } void GenMask(WriteableBitmap wb)         {             int _width

    1.1K100发布于 2018-01-22
  • 来自专栏林德熙的博客

    dotnet 读 WPF 源代码笔记 了解 WPF 已知问题 后台线程创建 WriteableBitmap 锁住主线程

    在 WPF 中,如果在没有开启 Dispatcher 的后台线程里面创建 WriteableBitmap 对象,在 WriteableBitmap 构造函数传入在主线程创建的 BitmapSource During this period, creating a WriteableBitmap makes the program hang. 原因是在后台线程创建 WriteableBitmap 时,会进入 WriteableBitmap.InitFromBitmapSource 方法,在这个方法里面获取了一个主线程后续将会等待的锁。 System.Windows.Media.Imaging.WriteableBitmap.Unlock() PresentationCore.dll! System.Windows.Media.Imaging.WriteableBitmap.WriteableBitmap(System.Windows.Media.Imaging.BitmapSource

    78120发布于 2021-04-19
  • 来自专栏dino.c的专栏

    [UWP]使用Writeable​Bitmap创建HSV色轮

    WriteableBitmap WriteableBitmap 提供可写入并可更新的 BitmapSource。也就是说, 你可动态更改图像,然后重新呈现更新的图像。 使用WriteableBitmap创建HSV色轮 前面介绍了Hsv色轮,也介绍了如何使用WriteableBitmap,那么用WriteableBitmap实现一个HSV色轮是一件很简单的事,只需要计算每个像素点距离中心点的角度 (Hue)和距离(Saturation)得出HsvColor,再转换成ArgbColor填入WriteableBitmap就实现了。 ); The WriteableBitmapEx library is a collection of extension methods for the WriteableBitmap. 参考 HSL and HSV - Wikipedia WriteableBitmap Class 6. 源码 HsvColorWheel for UWP

    1.3K30发布于 2019-01-18
  • 来自专栏张善友的专栏

    Windows Phone 7 实战第二天 二维码QRcode

    创建QRCode的核心代码     public static WriteableBitmap CreateBarcode()     {             WriteableBitmap             {             }             return wb;         }          public static WriteableBitmap ConvertByteMartixToWriteableBitmap(ByteMatrix bm)            {                       WriteableBitmap wb = new WriteableBitmap(bm.Width, bm.Height);              for (int x = 0; x <= wb.PixelWidth

    897100发布于 2018-01-22
  • 来自专栏林德熙的博客

    dotnet 在 WPF 里显示数学 π 的颜色

    ToBitmap(List<int> list, double width, double height) { var writeableBitmap = new WriteableBitmap((int)width, (int)height, 96, 96, PixelFormats.Bgra32, null); writeableBitmap.Lock (); var backBuffer = (byte*)writeableBitmap.BackBuffer; var length = writeableBitmap.PixelWidth * writeableBitmap.PixelHeight * writeableBitmap.Format.BitsPerPixel / 8; (new Int32Rect(0, 0, writeableBitmap.PixelWidth, writeableBitmap.PixelHeight)); writeableBitmap.Unlock

    1.2K10发布于 2021-08-31
  • 来自专栏菩提树下的杨过

    silverlight中如何将BitmapImage转化为Stream或byte数组?

    上一篇"base64编码在silverlight中的使用"里已经提到WriteableBitmap对象可以借助FluxJpeg转化为base64字符串,而WriteableBitmap又能从BitmapSource 问题解决了 先将BitmapImage转化为WriteableBitmap,然后得到base64字符串,然后可以得到base64的byte[]数组,再然后您可以把byte[]变成Stream 关键代码: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->1 WriteableBitmap wb = new WriteableBitmap(img.Source as BitmapSource);//将Image对象转换为WriteableBitmap byte[] b = Convert.FromBase64String

    1.4K50发布于 2018-01-23
  • 来自专栏我和未来有约会

    不规则图形的碰撞检测

    bCollision = false; Point ptCheck = new Point(); // NOTE that creating the writeablebitmap WriteableBitmap wb = controlElem.Tag as WriteableBitmap; int width = wb.PixelWidth; List<UIElement>; return (hits.Contains(controlElem)); } } private static WriteableBitmap GetWriteableBitmap(FrameworkElement control) { WriteableBitmap wb = new WriteableBitmap(

    1.4K100发布于 2018-01-16
领券