首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在Win2d中如何从CanvasDrawingSession中的指定区域copyPixelsFromBitmap()到另一个canvasBitmap?

在Win2D中,可以使用CanvasDrawingSessionCopyPixelsFromBitmap方法将指定区域的像素从一个CanvasBitmap复制到另一个CanvasBitmap

以下是完善且全面的答案:

在Win2D中,可以使用CanvasDrawingSessionCopyPixelsFromBitmap方法从一个CanvasBitmap的指定区域复制像素到另一个CanvasBitmap。该方法的语法如下:

代码语言:txt
复制
public void CopyPixelsFromBitmap(
    CanvasBitmap sourceBitmap,
    Rect sourceRect,
    Vector2 destPoint
)

参数说明:

  • sourceBitmap:要复制像素的源CanvasBitmap对象。
  • sourceRect:要复制的源区域的矩形范围。
  • destPoint:目标CanvasBitmap中的起始点,用于指定复制像素的位置。

下面是一个示例代码,演示如何使用CopyPixelsFromBitmap方法从一个CanvasBitmap的指定区域复制像素到另一个CanvasBitmap

代码语言:txt
复制
using Microsoft.Graphics.Canvas;
using Microsoft.Graphics.Canvas.UI.Xaml;
using System;
using Windows.Foundation;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;

namespace Win2DSample
{
    public sealed partial class MainPage : Page
    {
        private CanvasBitmap sourceBitmap;
        private CanvasBitmap destBitmap;

        public MainPage()
        {
            this.InitializeComponent();
        }

        private async void CanvasControl_CreateResources(CanvasControl sender, Microsoft.Graphics.Canvas.UI.CanvasCreateResourcesEventArgs args)
        {
            // 加载源位图和目标位图
            sourceBitmap = await CanvasBitmap.LoadAsync(sender, "sourceBitmap.png");
            destBitmap = new CanvasBitmap(sender, (int)sourceBitmap.Size.Width, (int)sourceBitmap.Size.Height);
        }

        private void CanvasControl_Draw(CanvasControl sender, CanvasDrawEventArgs args)
        {
            // 创建绘图会话
            using (var session = args.DrawingSession)
            {
                // 绘制源位图
                session.DrawImage(sourceBitmap);

                // 定义源区域
                Rect sourceRect = new Rect(0, 0, 100, 100);

                // 定义目标起始点
                Vector2 destPoint = new Vector2(200, 200);

                // 从源位图的指定区域复制像素到目标位图
                session.CopyPixelsFromBitmap(sourceBitmap, sourceRect, destPoint);

                // 绘制目标位图
                session.DrawImage(destBitmap);
            }
        }
    }
}

在上述示例中,首先在CanvasControl_CreateResources方法中加载源位图和目标位图。然后,在CanvasControl_Draw方法中创建绘图会话,并使用DrawImage方法绘制源位图。接下来,定义源区域和目标起始点,并使用CopyPixelsFromBitmap方法从源位图的指定区域复制像素到目标位图。最后,使用DrawImage方法绘制目标位图。

请注意,上述示例中的sourceBitmap.png是源位图的文件路径,你需要将其替换为你自己的源位图文件路径。

以上是关于在Win2D中如何从CanvasDrawingSession中的指定区域CopyPixelsFromBitmap到另一个CanvasBitmap的完善且全面的答案。如果你想了解更多关于Win2D的信息,可以访问腾讯云的Win2D产品介绍页面:Win2D产品介绍

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

win10 uwp win2d 入门 看这一篇就够了

本文后面会告诉大家如何做动画。...资源创建会发生另一个触发是丢失设备,关于丢失设备请看Win2D 官方文章系列翻译 - 处理设备丢失 - void² - 博客园 设置 win2d 背景 win2d 会忽略 xaml 设置背景,如果使用...; 关于 Alpha 请看 Win2D 官方文章系列翻译 - 预乘 Alpha - void² - 博客园 特效 现在特效,越来越便宜,原先很贵特效,到现在不到一块钱。...本文只告诉大家如何使用特效,因为几乎所有的特效使用方法都差不多,就是输入位图,修改参数,输出修改后位图。如果需要使用多个特效合在一起,就把前面特效输出位图输入第二个特效。...因为 AlphaMaskEffect 需要指定一个区域 Alpha 值,让对应图片对应区域显示,所以需要用到 CanvasCommandList 用来画出矩形区域 private void

1.5K20

win10 uwp win2d 特效 AlphaMaskEffectArithmeticCompositeEffect

本文告诉大家 win2d 里面的特效 开始之前先创建一个项目,这里创建 SeexerefaspeaRoulejur 最低版本 17134 选择比较新版本可以解决之前一些版本存在坑 ?...1.png 2.png 作为素材, win2d 有事件 CreateResources 可以用来创建图片 先在后台引用 win2d 需要使用代码 using Microsoft.Graphics.Canvas...} 注意在获取图片时,需要设置图片为内容,请看 win10 uwp 访问解决方案文件 如果没有设置图片为内容,就会出现 FileNotFoundException 而且信息是 "系统找不到指定文件...(Exception from HRESULT: 0x80070002)" 下面开始告诉大家各个特效是如何使用 AlphaMaskEffect 使用特效之前需要引用代码 using Microsoft.Graphics.Canvas.Effects...; } } 之前已经写过如何使用 AlphaMaskEffect 博客了,所以本文就简单告诉大家如何使用 运行可以看到下面界面 ?

50020

win10 uwp win2d 离屏渲染

先来写一个简单界面,写之前,请安装 Win2d 。...离屏渲染也叫离线渲染,为了让用户看到炫酷界面,要求渲染时间小于 16 毫秒,也就是一秒钟至少60刷新。 渲染时间是很有限,如果在渲染需要耦合计算,那么会让渲染性能降低。...离线渲染意思是可以在其他线程渲染,虽然渲染都是GPU渲染,都是渲染是包括告诉如何渲染和把图片画出来,可以看到如何渲染就可能需要在CPU做很多计算。...,显示时候可以快速画出 Offscreen drawing win2d CanvasRenderTarget vs CanvasBitmap 注意,暗影吉他手告诉我, Button_OnClick...设备上面的代码是可以运行,所以暂时不修改。 多谢暗影吉他手发现问题 参见:Win2D 官方文章系列翻译 - 幕后绘制 - void² - 博客园

45920

win2d 通过 CanvasActiveLayer 画出透明度和裁剪 创建 CanvasActiveLayer 方法透明度透明度图片裁剪

本文告诉大家如果在 UWP win2d 通过 CanvasActiveLayer 创建一层,在这里画出图片有透明度或者裁剪 win2d 如果需要对某个元素裁剪,可以使用很多方法,本文只是告诉大家使用图层方法裁剪...如果熟悉 WPF 那么对于这个裁剪将会比较简单,当然没有接触过 WPF 小伙伴也可以继续看,如果有发现不懂,欢迎评论喷 首先创建一个 win2d 控件,如何安装 win2d 请看 win10 uwp...下面告诉大家如何使用 CanvasActiveLayer 方法 创建 CanvasActiveLayer 方法 Canvas_OnRegionsInvalidated 方法可以通过 CreateDrawingSession...创建 CanvasDrawingSession 方法 CanvasDrawingSession 有 CreateLayer 方法,这里面有很多重载,下面将会通过修改透明度方法告诉大家如何使用 CanvasActiveLayer...win2d CanvasRenderTarget vs CanvasBitmap win10 uwp win2d 使用 Path 绘制界面 win10 uwp win2d 离屏渲染 win2d 画出好看图形

1.5K20

win10 uwp win2d 离屏渲染

先来写一个简单界面,写之前,请安装 Win2d 。...所以 按钮点击时候可以进行离屏渲染,这时CanvasControl渲染时候直接拿按钮点击下去画就可以。...离屏渲染也叫离线渲染,为了让用户看到炫酷界面,要求渲染时间小于 16 毫秒,也就是一秒钟至少60刷新。 渲染时间是很有限,如果在渲染需要耦合计算,那么会让渲染性能降低。...离线渲染意思是可以在其他线程渲染,虽然渲染都是GPU渲染,都是渲染是包括告诉如何渲染和把图片画出来,可以看到如何渲染就可能需要在CPU做很多计算。...,显示时候可以快速画出 Offscreen drawing win2d CanvasRenderTarget vs CanvasBitmap 注意,暗影吉他手告诉我, Button_OnClick

64120

win10 uwp 录制任意应用屏幕

我猜是显卡拿到渲染图片句柄,然后win2d渲染只是复制句柄通过 DWM 渲染图层。这个方式渲染速度基本就是跑满,同时占用资源如下图 ?...下面请让我告诉大家如何使用 通过 GraphicsCapturePicker 可以让用户选取录制哪个应用,开始之前需要申请权限。...,可以在这个事件触发时候参数拿到当前界面图片,绘制win2d图层 还有一个方法是 CreateCaptureSession 可以用来返回捕获会话,请看下面代码 // 下面参数暂时不能修改...Direct3D11CaptureFrame 转 win2d CanvasBitmap canvasBitmap = CanvasBitmap.CreateFromDirect3D11Surface...CanvasBitmap 就可以使用 win2d 绘制图层上,这样就完成了绘制其他窗口 using (var session = CanvasComposition.CreateDrawingSession

1.6K30

UWP 手绘视频创作工具技术分享系列 - 手绘视频导出

后台渲染手绘视频 后台渲染我们借助还是 Win2D,前面几篇介绍过,创作绘制过程也是借助 Win2D 来完成动态渲染。...把需要渲染元素和指定时间等属性传递给 Win2D,其他Win2D 去完成,这里不多作介绍。 2....不过我们 UWP 并没有使用 FFMpeg,一方面代码库体积较大,另一方面我们有 MediaComposition 和 MediaClip 可用。...基于这些问题,我们想到了另一个解决办法,在用户本地,使用浏览器插件或本地应用程序,来完成转换并同步服务器。下面简单说说我们目前尝试几种方案: 1....这里我们就讲解完毕了,UWP 视频导出,Web 端视频导出问题,以及目前我们想到解决方案,如果大家有更好办法,欢迎反馈给我们,感谢!

1K60

win10 uwp 毛玻璃 Compositor 创建毛玻璃win2D最简单方法

毛玻璃UWP很简单,不会和WPF那样伤性能。 本文告诉大家,如何在 UWP 使用 win2d 做毛玻璃。 毛玻璃可以使用 win2D 方法,也可以使用 Compositor 。...使用 win2d 得到软件内控件毛玻璃,而使用 Compositor 可以获得窗口毛玻璃。 先来说下如何使用 Compositor 做窗口毛玻璃,感觉小伙伴感兴趣是窗口毛玻璃。...这个代码是 http://www.jianshu.com/p/3b49fd3d7edb 复制 大概解释一下, compositor.CreateHostBackdropBrush() 获得 创建之前绘制窗口后面视觉效果区域...win2D 下面介绍使用 win2d 做毛玻璃 使用 win2D 方法,需要使用 Nuget 安装,如果速度太慢,推荐使用博客园镜像 ? 这个方法可以获得控件毛玻璃,但是不可以获得窗口毛玻璃 ?...接下来告诉大家如何做上图效果。 但是可以看到,上面的图做了其他,如拖动时显示后面的图片。为了显示最短代码,让大家知道毛玻璃是如何,下面先来做效果。

1K10

win10 uwp 通过 win2d 画出笔迹 界面笔迹性能原理完全控制墨迹多指输入转换笔迹无限漫游

本文告诉大家如何在 UWP 上让 win2d 画出笔迹,通过实际测试发现在 UWP 笔迹性能比 WPF 高很多。...因为 InkCanvas 使用了不清真的方式实现了触摸收集点方法,而使用 Pointer 是通过消息循环给程序,同时 Pointer 还需要经过路由事件,这样就让笔迹书写速度不够快。...如果 InkCanvas 只是更快收到触摸消息,那么也无法做到像现在这么快速度。尝试写一个空白 UWP 程序,在里面添加笔迹控件,移动过程,进入断点,这时你还可以继续 UWP 应用上画。...而湿干就是动态转静态笔迹。将笔迹转为静态就可以让笔迹变为一个界面元素,参与界面的变化,如选择和层级这些业务。...动态笔迹只是做渲染,用最快算法触摸收集点画出来,而静态笔迹就是将动态笔迹转换为普通元素,可以用来做业务 当然大家也不会关注为什么笔迹 UWP 那么快,于是就继续在后台代码添加设置。

1K20

win10 uwp 求两个矩形相连几何

本文采用坐标是左上角是 (0,0) 点,左向右坐标变大,从上到下坐标变大 但是对于矩形可以做到特殊算法,提高速度,方法就是取矩形左上角进行判断,如果判断两个矩形一个矩形左边小于另一个矩形左边...也就是两个矩形,满足下面公式,其中 rect1 和 rect2 值可以互换 rect1.Left <= rect2.Left && rect1.Top <= rect2.Top 此时就可以认为两个矩形按照左上角右下角坐标...于是连接 rect1 左上角点 rect1 右上角点 rect2 右上角点 rect2 右下角点 rect2 左下角点 rect1 左下角点就可以连接处理这个六边形或矩形 另一个是两个矩形是按照左下角右上角坐标...如果存在一个矩形左下角左边比另一个矩形左边小,同时这个矩形下边比另一个矩形下边大 两个矩形,满足下面方法,其中 rect1 和 rect2 值可以互换 rect1.Left <= rect2...左下角就可以连接处理这个六边形或矩形 下面是我写一个呆磨,代码是通过 win2d,需要通过 Nuget 安装 Win2d 然后 xaml 设置 Grid Name 为 Grid 代码可以添加

45720

问与答61: 如何将一个文本文件满足指定条件内容筛选另一个文本文件

图1 现在,我要将以60至69开头行放置另一个名为“OutputFile.csv”文件。...图1只是给出了少量示例数据,我数据有几千行,如何快速对这些数据进行查找并将满足条件行复制新文件?...End If Loop '关闭文件 Close #2 Close #1 End Sub 代码假设“InputFile.csv”和“OutputFile.csv”文件都放置与代码工作簿相同文件夹...4.Line Input语句文件号#1文件逐行读取其内容并将其赋值给变量ReadLine。 5.Split函数将字符串使用指定空格分隔符拆分成下标以0为起始值一维数组。...6.Print语句将ReadLine变量字符串写入文件号#2文件。 7.Close语句关闭指定文件。 代码图片版如下: ?

4.2K10

WPF 使用 Win2d 渲染

在当前所有渲染框架里面,做 2D 渲染,最好框架是 Win2d 这个提供了大量底层接口封装,不仅性能高同时接口设计非常好 很久之前,只有 UWP 等现代应用才能使用 Win2d 而 WPF 是不能使用...好在微软开放了一些黑科技,可以 WPF 上使用 Win2d 渲染,下面就让我告诉大家如何在 WPF 上使用 2019年7月03日 这个技术还是属于黑科技,还没有正式发布,开始使用之前,有一定环境要求...// Win2d 渲染平面完成之后,将这个平面作为一个画刷用于之后效果 _noiseSurfaceBrush = _compositor.CreateSurfaceBrush...(_acrylicVisual); 现在就完成了 WPF 里面使用 Win2d 顺便还提供了亚克力功能 其实本文主要不是告诉大家如何写代码,而是如何让官方代码可以运行 在运行过程可能会遇到以下坑...:“找不到指定模块。

89120

Win2D实现镂空文字

前言 之前用PointLight做了一个番茄钟,效果还不错,具体可见这篇文章: [UWP]使用PointLight并实现动画效果 后来试玩了Win2D,这次就用Win2D实现文字镂空效果,配合PointLight...实现镂空文字核心思想是使用CanvasGeometry.CreateTextTextLayout获取一个Geometry,然后使用DrawGeometry将它画到DrawingSurface。...参考例子 Win2D Gallery提供了大量Win2DSample,这次就参考了其中文字镂空效果例子,地址和运行效果如下: https://github.com/microsoft/Win2D-Samples...实现步骤 Sample代码量虽多,其实核心并不复杂,下面讲讲需要用到API: 3.1 CanvasDevice.GetSharedDevice 因为要用到Win2D,所以首先要引用Win2D.uwp...{ } 3.6 CanvasTextFormat和CanvasTextLayout 要再DrawingSurface上写字,需要CanvasTextLayout,而CanvasTextLayout文字大小

64320

WPF 源代码 从零开始写一个 UI 框架

本文不会直接告诉大家 WPF 源代码是如何,而是从零开始一起来写一个 UI 框架,过程就会了解为什么 WPF 可以这样写,为什么需要这样写,和 WPF 这样写好处。... DrawEllipse 不是立刻绘制 win2d 而是将绘制存放到 DrawVisualList 里面,实际 Win2D 绘制时候就需要拿到绘制,下面是 Win2D 画布 Draw 事件代码...框架元素已经完成,只是 WPF 调用 DrawContext 也不是进行立刻绘制,是需要发送到另一个线程进行绘制,和上面使用方法差不多。...调用绘制方法是存放如何绘制,只有另一个线程才是读取绘制如何绘制画出元素。 那么为什么需要经过 DrawingContext 中转?...原理就可以知道如何封装绘制接口,元素进行渲染时候,需要判断元素是否基础元素,如果不是基础元素就需要封装 DrawingContext 传入元素里面的元素,也就是外层容器拿到自己 DrawingContext

3.4K40

New UWP Community Toolkit - XAML Brushes

7 种画刷,它们都继承自 XamlCompositionBrushBase,一个创建 XAML Brushes 基类,使用 CompositionBrush 来绘制一个区域;而实现效果都是用了 Win2D...BackdropBlurBrush  下面是 BackdropBlurBrush 创建画刷源代码,大家也可以 Git 查看: Source: https://github.com/Microsoft...Bitmap, SurfaceBrush,使用 Win2D BlendBrush,把 SurfaceBrush 设置进去。...总结 这里我们就把 UWP Community Toolkit V2.2.0 实现 7 种画刷介绍完了,我们更多源代码实现和 SDK 简单实用角度来分析,如果大家有兴趣,可以多尝试每种画刷里参数设置不同值时效果...;如果工作中上面 7 种画刷不满足需求,也可以 Win2D 寻找更多种类画刷去封装实现。

1.3K40

Win2D和CompositionAPI实现文字发光效果,并制作动画

献祭了周末晚上,成功召唤出了上面的番茄钟。正当我感慨“不愧是Shadow大人,这难道就是传说中五彩斑斓黑?” “那才不是什么阴影效果,那是发光效果。”被路过老婆吐槽了。...CanvasDrawingSession.CreateLayer函数使用透明度和CanvasGeometry创建一个CanvasActiveLayer,创建Layer后CanvasDrawingSession...如上图所示,UWPDropShadowColor只能有一种颜色,所以DropShadow不能使用复杂颜色。...其中Mask是一个CompositionBrush类型属性,它指定不透明蒙板源。简单来说,CompositionMaskBrush形状就是它Mask形状。...Windows.UI.Composition) - Windows UWP applications _ Microsoft Docs 组合照明 - Windows UWP applications Microsoft Docs Win2D

87010

dotnet 入门放弃 500 篇文章合集

本文是记录我入门放弃写博客 博客包括 C#、WPF、UWP、dotnet core 、git 和 VisualStudio 和一些算法,所有博客使用 docx 保存 下载:dotnet 入门放弃...net core 使用 usb dot net double 数组转 float 数组 dotnet core 编程规范 dotnet core 黑科技·String.IndexOf 性能 dotnet 入门放弃...uwp 如何拖动一个TextBlock文字另一个TextBlock win10 uwp 如何让 Page 继承泛型类 win10 uwp 如何让一个集合按照需要顺序进行排序 win10 UWP...CanvasRenderTarget vs CanvasBitmap win2d 图片水印 win2d 画出好看图形 Windows 10 16251 添加 api windows 10预览版升级...创建不带BOM UTF8 博客 图论 Warshall 和Floyd 矩阵传递闭包 windows 安装 Jekyll 域名 大文件存储和备份 如何使用 C# 爬虫获得专栏博客更新排行 如何使用

10.4K20
领券