本文主要讲如何保存我们的屏幕显示的,保存为图片,也就是截图,截我们应用显示的。
UWP有一个功能,可以截图,RenderTargetBitmap
我们首先写一个Grid,我们需要给他名字,我这里给他Stamp
,需要名称可以让我们在后面使用截图用到元素。
然后我们可以使用RenderTargetBitmap
保存我们屏幕Grid显示的
var bitmap = new RenderTargetBitmap()
StorageFile file = await KnownFolders.PicturesLibrary.CreateFileAsync("1.jpg",
CreationCollisionOption.GenerateUniqueName)
await bitmap.RenderAsync(Stamp)
var buffer = await bitmap.GetPixelsAsync()
using (IRandomAccessStream stream = await file.OpenAsync(FileAccessMode.ReadWrite))
{
var encod = await BitmapEncoder.CreateAsync(
BitmapEncoder.JpegEncoderId, stream)
encod.SetPixelData(BitmapPixelFormat.Bgra8,
BitmapAlphaMode.Ignore,
(uint)bitmap.PixelWidth,
(uint)bitmap.PixelHeight,
DisplayInformation.GetForCurrentView().LogicalDpi,
DisplayInformation.GetForCurrentView().LogicalDpi,
buffer.ToArray()
)
await encod.FlushAsync()
}
await bitmap.RenderAsync(Stamp);
能把一个UIelement显示转为图片,不过这个图片我们需要用BitmapEncoder
才可以保存为我们的图片
BitmapEncoder
可以保存为bmp、jpg、gif、png
保存需要使用SetPixelData
BitmapPixelFormat pixelFormat, BitmapAlphaMode alphaMode, System.UInt32 width, System.UInt32 height, System.Double dpiX, System.Double dpiY, [Range(0, int.MaxValue)] System.Byte[] pixels
我们在Grid放一个Image,然后可以看到,我们的原图
我们把图片一部分不显示,截图下来看下不显示的是不是就不会在图片
<Grid x:Name="Stamp" >
<Image x:Name="image" Width="500"
Margin="200,10,10,10">
</Image>
</Grid>
可以看到我们有部分被裁掉
假如我们不显示Grid
<Grid Grid.Row="0" Background="White"></Grid>
我们的Grid被一个Grid,背景为白色的遮盖,结果没影响
那么我们要显示我们的图片显示全,我们可以借用一个简单的控件
<ScrollViewer VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Visible">
<Grid x:Name="Stamp" >
<Image x:Name="image" Width="500"
Margin="300,10,10,10">
</Image>
</Grid>
</ScrollViewer>
我们的图片不会被遮盖,因为我们可以有无限空间
我们可以在滚动条写大小为很小,但是Width="1"
就出错,我们不需要把他放在用户可视的,也就是放在最底层也是可以
水印
UWP图片水印简单,我们需要一个Image和一个水印,水印在图片Zindex比他大
我们在我们图片的同个Panel放一个TextBlock,然后TextBlock就是我们的水印。
<Grid x:Name="Stamp">
<Image x:Name="image" Width="500"
Margin="300,10,10,10" />
<TextBlock Text="blog.csdn.net/lindexi_gd"
HorizontalAlignment="Center"
VerticalAlignment="Center" />
</Grid>
可以看到我们有了水印,虽然这样看起来一定都不觉得是好的。(我不想说很烂)
如果遇到了全黑的图,我们还没办法加水印,但是基本99%的图是可以的。(谁说的,代码是黑的,vs背景用黑的好多)
如果想要改颜色,每个颜色改为和图不同的,好难。
我想到渐变,这样每个颜色都有。LinearGradientBrush是渐变,我们需要每个字符都看到,我们把渐变改为从上到下。EndPoint="0,1" StartPoint="0,0"
一个是开始的Point,一个是结束
<TextBlock.Foreground>
<LinearGradientBrush EndPoint="结束点X,结束点Y" StartPoint="开始点X,开始点Y">
<GradientStop Color="颜色 默认offset=0"/>
<GradientStop Color="White" Offset="1 1就是100%"/>
</LinearGradientBrush>
</TextBlock.Foreground>
说到这,我们来总的说下,就是用一个滚动条把我们的一个Grid放进去,然后Grid里面存在一张图片和一个TextBlock,图片就是我们需要加水印的,TextBlock就是水印,水印颜色最好渐变,然后使用获取元素图片截图。保存截图就是我们的图片加水印,做法很简单。
如果对大图感觉水印太小,可以用ViewBox。如果觉得我们水印要在中间,或下方或其他,那么我们需要把Image的宽度不设置,然后Grid也不设置高度和宽度。
<ScrollViewer Width="10" Height="10"
VerticalScrollBarVisibility="Visible"
HorizontalScrollBarVisibility="Visible">
<Grid x:Name="Stamp">
<Image x:Name="image" HorizontalAlignment="Left"
VerticalAlignment="Top"
Margin="10,10,10,10" />
<TextBlock Text="blog.csdn.net/lindexi_gd"
HorizontalAlignment="Center"
VerticalAlignment="Center" >
<TextBlock.Foreground>
<LinearGradientBrush EndPoint="0,1" StartPoint="0,0">
<GradientStop Color="Black"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush>
</TextBlock.Foreground>
</TextBlock>
</Grid>
</ScrollViewer>
参见:http://www.zmy123.cn/?p=1257
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
<script type="text/javascript">
$(function () {
$('pre.prettyprint code').each(function () {
var lines = $(this).text().split('\n').length;
var $numbering = $('<ul/>').addClass('pre-numbering').hide();
$(this).addClass('has-numbering').parent().append($numbering);
for (i = 1; i <= lines; i++) {
$numbering.append($('<li/>').text(i));
};
$numbering.fadeIn(1700);
});
});
</script>
相关推荐
全选设置之后UWP即可访问localhost,可以走代理。
Win10 UWP 开发教程 课程 资源 80课时 课程地址:http://blog.csdn.net/shanguuncle/article/details/78111649
在Windows 10操作系统中,开发人员可以利用通用Windows平台(UWP)应用程序接口来实现对Wi-Fi网络的各种操作,包括刷新Wi-Fi列表、获取Wi-Fi信息以及连接到Wi-Fi网络。UWP提供了丰富的API集,使得开发者能够在安全且...
总结来说,"win10 uwp 轻量级 MVVM 框架入门 2.1.5.3199 例子"提供了一个实际操作的平台,让开发者学习如何在UWP环境中利用MVVM模式进行开发。通过分析和实践这个框架,你将能够更好地理解MVVM的工作原理,以及如何...
在Windows 10 UWP应用开发中,常常需要创建一种用户友好的交互方式,即当用户右键点击某个元素时,能在一个特定的位置显示一个浮出菜单(MenuFlyout)。本篇文章将详细介绍如何使用C#实现这样的功能,使得MenuFlyout...
在本文中,我们将探讨如何利用Windows 10的UWP(通用Windows平台)应用程序与ASP.NET Core构建一个图床服务器的客户端。这是一个涉及到跨平台开发和云端图像存储管理的项目,旨在提供一种高效且灵活的方式来上传和...
win10 moblie uwp qq5.6.1150.1000主程序,不含依赖程序
win10 moblie uwp 越飞阅读1.4.68.0主程序,不含依赖程序
在UWP(Universal Windows Platform)应用开发中,自适应界面设计是至关重要的,它使得应用程序能够在各种设备上,如桌面、平板电脑、手机甚至Xbox等,呈现出良好的用户体验。本示例通过`AdaptiveLayout`项目,展示...
在UWP(Universal Windows Platform)应用开发中,有时我们需要在保存图片时添加Exif(Exchangeable Image File Format)信息,这些信息通常包含了拍摄照片时的各种元数据,如相机型号、制造商、光圈值、曝光时间、...
title: "win10 uwp 字符文本转语音声音文件方法"在 UWP 中,支持将传入的字符串文本内容转换为音频语音,可以将这个语音声音通过 MediaEl
【描述】提到的"一个uwp开发源码,可以移植到一切win10系统"意味着该项目遵循了UWP的跨平台特性,使得开发者能够在不同类型的Windows 10设备上部署和运行同一套代码。UWP是微软为了统一Windows生态而推出的新开发...
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上...
但是LTSB/C也没了应用商店和UWP运行环境.,LTSC自动恢复win10应用商店,应用商店也是Win10的一大特色! Win10的应用商店也有一些优秀的应用可以代替臃肿的桌面程序. 使用该工具即可在 Windows10 LTSC(2019,1809) 上安装...
首先打开 使用微软的账号或 github 账号登陆点击 add new 添加一个 UWP 程序,需要写出 app 的
此安装包为win10的uwp版应用软件Sound Blaster Connect,有需要的朋友可以去下载下来
微软推出的开源UWP社区工具包(Windows Community Toolkit)是一个关键的资源,它旨在简化和加速开发流程,使得开发者能够更高效地利用Win10 SDK进行编程。 UWP社区工具包是一个集合了各种辅助工具、组件和示例代码...
在UWP(Universal Windows Platform)应用开发中,换肤功能是一项重要的用户体验设计,它允许用户根据个人喜好更改应用的主题色、背景图片等视觉元素,从而提升应用的个性化和吸引力。UWP的换肤通常涉及到以下几个...
win10应用商店安装包,Microsoft.WindowsStore_11804.1001.913.0_neutral_~_8wekyb3d8bbwe,可用于不带应用商店的安装
如果需要反过来,把同步转异步,可以使用 同步方法转异步写你的代码使用Task.Wait 时需要小心死锁不会出现死锁的代码使用Task.Delay等待即使使用方法