GVKun编程网logo

FastStone Capture怎么截取固定区域-截取固定区域方法(faststone capture怎么自定义滚动截图)

12

对于FastStoneCapture怎么截取固定区域-截取固定区域方法感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解faststonecapture怎么自定义滚动截图,并且为您提供关于.N

对于FastStone Capture怎么截取固定区域-截取固定区域方法感兴趣的读者,本文将提供您所需要的所有信息,我们将详细讲解faststone capture怎么自定义滚动截图,并且为您提供关于.NET SkiaSharp 生成二维码验证码及指定区域截取方法实现、cad如何截取选定区域、DIV 使用Scroll来设定固定区域滚动,超出区域的显示问题。、FastStone Capture(FSCapture) 注册码的宝贵知识。

本文目录一览:

FastStone Capture怎么截取固定区域-截取固定区域方法(faststone capture怎么自定义滚动截图)

FastStone Capture怎么截取固定区域-截取固定区域方法(faststone capture怎么自定义滚动截图)

非常多的朋友喜欢使用FastStone Capture这款软件进行截图,那么FastStone Capture怎么截取固定区域的图片呢?在这里小编就将具体的操作方法分享如下哦。

首先,在 FastStone Capture 的主界面点击最右边的设置图标,在弹出的菜单项中点击“设置”。


然后,打开设置窗口以后,在“工具栏”选项卡里勾选“捕获固定区域”。


接着,切换到“捕获”选项卡,设好“固定区域大小”的值,再点击“确定”。


设置完成以后,当我们要截取固定区域时,则可以点击软件主界面上的“捕获固定区域”图标。


点击之后,将会出现一个矩形线框,其大小就是之前我们设好的大小。这时,我们移到鼠标,调整线框的位置。等到位置调好以后,点击鼠标左键就可以完成截屏了。

FastStone Capture截取固定区域方法小编就分享到这里了,有需要的朋友不要错过本篇文章哦。

.NET SkiaSharp 生成二维码验证码及指定区域截取方法实现

.NET SkiaSharp 生成二维码验证码及指定区域截取方法实现

正文

在最新版的 .NET 平台中,微软在逐步放弃 System.Drawing.Imaging ,给出的理由如下:

System.Drawing命名空间对某些操作系统和应用程序类型有一些限制。

在Windows, System.Drawing 依赖于GDI+操作系统附带的本机库。 某些Windows SKUS Windows Server Core 或 Windows Nano)不包含此本机库作为 OS 的一部分。 如果使用此命名空间并且无法加载库,则运行时将引发异常。

命名空间中的某些类型依赖于 GDI+ ,而 Windows 服务以及 ASP.NET Core 和 System.Drawing ASP.NET 应用不支持。 这些类型在System.Drawing.Common NuGet包中,并包括 System.Drawing.Bitmap 和 System.Drawing.Font 。 但是,命名空间中的基元类型(如 System.Drawing.Color 、、 和 System.Drawing.Size System.Drawing.Point System.Drawing.Rectangle )可以在任何应用程序中使用。

在 .NET 5 和早期版本中,System.Drawing.Common NuGet 包适用于 Windows、Linux 和 macOS。 但是,存在一些平台差异。 在 Linux 和 macOS 上,GDI+功能由libgdiplus) 库实现。 默认情况下,大多数 Linux 发行版中不会安装此库,也不支持 GDI+ 和 macOS 上Windows的所有功能。 还有一些平台,其中 libgdiplus 完全不可用。 若要在 Linux 和 macOS 上使用 System.Drawing.Common 包中的类型,必须单独安装 libgdiplus。 有关详细信息,请参阅在Linux 上安装 .NET或在macOS 上安装 .NET。

在 .NET 6 及更高版本中,System.Drawing.Common NuGet 包仅在 Windows操作系统上受支持。 有关详细信息,请参阅 仅支持System.Drawing.Common Windows。

所以我将项目中原先使用 System.Drawing.Imaging 实现的方法采用 SkiaSharp 进行了重写。
SkiaSharp是 Google 的Skia 图形库的 .NET 包装器,可用于跨移动、服务器和桌面平台绘制 2D 图形。SkiaSharp 可与 OpenGL 一起用于硬件加速渲染。SkiaSharp 最初由 Mono 开发,但现在由 Microsoft 维护,并根据MIT License提供。

依赖的 Nuget 组件如下

  • SkiaSharp
  • SkiaSharp.NativeAssets.Linux
  • SkiaSharp.QrCode
using SkiaSharp.QrCode;
namespace Common
{
    public class ImgHelper
    {
        /// <summary>
        /// 生成二维码
        /// </summary>
        /// <param name="text">二维码内容</param>
        /// <returns></returns>
        public static byte[] GetQrCode(string text)
        {
            using QRCodeGenerator generator = new();
            using var qr = generator.CreateQrCode(text, ECCLevel.L);
            SKImageInfo info = new(500, 500);
            using var surface = SKSurface.Create(info);
            using var canvas = surface.Canvas;
            canvas.Render(qr, info.Width, info.Height, SKColors.White, SKColors.Black);
            using var image = surface.Snapshot();
            using var data = image.Encode(SKEncodedImageFormat.Png, 100);
            return data.ToArray();
        }
        /// <summary>
        /// 从图片截取部分区域
        /// </summary>
        /// <param name="fromImagePath">源图路径</param>
        /// <param name="offsetX">距上</param>
        /// <param name="offsetY">距左</param>
        /// <param name="width">宽度</param>
        /// <param name="height">高度</param>
        /// <returns></returns>
        public static byte[] Screenshot(string fromImagePath, int offsetX, int offsetY, int width, int height)
        {
            using var original = SKBitmap.Decode(fromImagePath);
            using SKBitmap bitmap = new(width, height);
            using SKCanvas canvas = new(bitmap);
            SKRect sourceRect = new(offsetX, offsetY, offsetX + width, offsetY + height);
            SKRect destRect = new(0, 0, width, height);
            canvas.DrawBitmap(original, sourceRect, destRect);
            using var img = SKImage.FromBitmap(bitmap);
            using SKData p = img.Encode(SKEncodedImageFormat.Png, 100);
            return p.ToArray();
        }
        /// <summary>
        /// 获取图像数字验证码
        /// </summary>
        /// <param name="text">验证码内容,如4为数字</param>
        /// <returns></returns>
        public static byte[] GetVerifyCode(string text)
        {
            int width = 128;
            int height = 45;
            Random random = new();
            //创建bitmap位图
            using SKBitmap image = new(width, height, SKColorType.Bgra8888, SKAlphaType.Premul);
            //创建画笔
            using SKCanvas canvas = new(image);
            //填充背景颜色为白色
            canvas.DrawColor(SKColors.White);
            //画图片的背景噪音线
            for (int i = 0; i < (width * height * 0.015); i++)
            {
                using SKPaint drawStyle = new();
                drawStyle.Color = new(Convert.ToUInt32(random.Next(Int32.MaxValue)));
                canvas.DrawLine(random.Next(0, width), random.Next(0, height), random.Next(0, width), random.Next(0, height), drawStyle);
            }
            //将文字写到画布上
            using (SKPaint drawStyle = new())
            {
                drawStyle.Color = SKColors.Red;
                drawStyle.TextSize = height;
                drawStyle.StrokeWidth = 1;
                float emHeight = height - (float)height * (float)0.14;
                float emWidth = ((float)width / text.Length) - ((float)width * (float)0.13);
                canvas.DrawText(text, emWidth, emHeight, drawStyle);
            }
            //画图片的前景噪音点
            for (int i = 0; i < (width * height * 0.6); i++)
            {
                image.SetPixel(random.Next(0, width), random.Next(0, height), new SKColor(Convert.ToUInt32(random.Next(Int32.MaxValue))));
            }
            using var img = SKImage.FromBitmap(image);
            using SKData p = img.Encode(SKEncodedImageFormat.Png, 100);
            return p.ToArray();
        }
    }
}

项目如果是在 windows 服务器下运行则不需要任何安装任何依赖项,如果是在 linux 服务下运行则需要安装 libfontconfig1,如 ubuntu 的安装命令

apt-get update

apt-get -y install libfontconfig1

如果是采用 docker 模式运行,则需要在 dockerfile 中添加如下配置,该命令适用于 debian 和 ubuntu 的 docker

RUN apt-get update && apt-get -y install libfontconfig1

至此 .NET 采用 SkiaSharp 生成二维码和图形验证码及图片进行指定区域截取方法实现 就讲解完了,有任何不明白的,可以在文章下面评论或者私信我,欢迎大家积极的讨论交流,有兴趣的朋友可以关注我目前在维护的一个 .NET 基础框架项目,项目地址如下

https://github.com/berkerdong/NetEngine

https://gitee.com/berkerdong/NetEngine

以上就是.NET SkiaSharp 生成二维码验证码及指定区域截取方法实现的详细内容,更多关于.NET SkiaSharp 二维码验证码截取的资料请关注其它相关文章!

您可能感兴趣的文章:
  • .NET Core利用skiasharp文字头像生成方法教程(基于docker发布)
  • ASP.NET Core使用SkiaSharp实现验证码的示例代码
  • 详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)
  • .NET C#利用ZXing生成、识别二维码/条形码
  • ASP.NET生成二维码的方法总结

cad如何截取选定区域

cad如何截取选定区域

方法:首先使用软件打开需要进行操作的图形文件;然后在指定地方单击鼠标左键查看需要的命令,根据提示执行“cp”指令;接着移动鼠标左键来确定第一点,再移动鼠标左键,确定指定区域;最后按下键盘上的“回车键”即可。

本文操作环境:Windows7系统,autocad2020版本,Dell G3电脑。

首先将CAD这款软件打开,打开该软件之后,在上面的常用菜单里找到文件夹形状的打开选项

H]~2{X{3FT438F(_J38Z$DN.png

点击这个打开就会弹出选择文件对话框,我们在这个对话框里面找到我们的图形文件

6HZ(RWZJBX[VA`]OKAB`D`T.png

将图形打开之后,我们在需要选择的地方单击鼠标左键不要松开可以看到在下面的命令行内就出现我们需要的命令

QIDA90I8KZWLXE97BNX)%]9.png

根据提示我们输入CP命令

21R3CCCIJ$M(HM]570JY3L1.png

输入命令之后我们按下回车键,然后移动鼠标左键来确定第一点

@ARGI4FF)MTJ0]CD[)JJ535.png

然后再移动鼠标左键,来确定我们需要选择的区域

_~6UJ6I4}7YMT3[0SP05MPI.png

确定好选择的区域之后,按下回车键可以看到我们的选区区域就被选择出来了

~1CVB$5S31ZO(P]FXZY4@]0.png

更多计算机相关知识,请访问常见问题栏目!

DIV 使用Scroll来设定固定区域滚动,超出区域的显示问题。

DIV 使用Scroll来设定固定区域滚动,超出区域的显示问题。

结合使用dojo-0.4.3生成dojo button控件是显示问题,

问题描述,

在html中设定一个div区域固定大小,支持scroll滚动,超出的部分将被隐藏,div的内容是一个table,通过dojo button来对某一列进行填充 ,

预期结果:超出div设定的范围,将被隐藏

问题:超出div区域,dojo button 控件没有被隐藏。

求解:如何的解决此问题:

 

html实现如下:

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Job Application Form</title>

<script type="text/javascript">
	var djConfig = {
		isDebug : true
	};
</script>
<script type="text/javascript" src="../../dojo.js"></script>
<script type="text/javascript">
	dojo.require("dojo.widget.*");
	dojo.require("dojo.event.*");
	dojo.require("dojo.xml.Parse");
	dojo.require("dojo.widget.Parse");
	var parser = new dojo.xml.Parse();

	dojo.addOnLoad( function() {

		var showCalcMethodbtn = dojo.widget.byId("showCalcMethodbtn");
		dojo.event.connect(showCalcMethodbtn, "onClick",
				showCalcMethodbtnPressed);

		var testbtn = dojo.widget.byId("testbtn");
		dojo.event.connect(testbtn, "onClick", testBtnPressed);
	});

	function testBtnPressed() {

		var str = "<div id=\"okbaba\"><input type=\"checkbox\" name=\"cb7\" id=\"cb7\" value=\"17\" dojoType=\"Checkbox\" /> BT4<br/>"
				+ "<input type=\"checkbox\" name=\"cb9\"  value=\"26\" dojoType=\"Checkbox\" /> BT5<br/></div>";

		var chtest = document.getElementById("chtest");

		chtest.innerHTML = str;
		var chtest1 = document.getElementById("cb3");

		var frag = parser.parseElement(chtest, null, true);
		dojo.widget.getParser().createComponents(frag);
		var test = dojo.widget.byId("cb7");
		test.setValue(true);
		dojo.attr(test, "aaa:checked", true);

	}

	function showCalcMethodbtnPressed() {
		var str = "<table border=\"1\" width=\"98%\" id=\"table10\" bgcolor=\"#CCFFFF\">"
				+ "<tr bgcolor=\"#66FFCC\"> <td width=\"139\"><p align=\"center\"><b>Calc Method</b></td>"
				+ "<td width=\"45\"><p align=\"center\"></td>"
				+ "<td><p align=\"center\"><b>Calc Field</b></td></tr>";
		for ( var i = 0; i < 10; i++) {
			str += "<tr id=\"showCalcFieldRow_"
					+ i
					+ "\"><td width=\"139\" id=\"showCalcMethodTD_"
					+ i
					+ "\" tittle="
					+ i
					+ ">"
					+ i
					+ "</td>"
					+ "<td width=\"45\"><button dojoType=\"Button\" widgetId=\"showCalcMethodbtn\" onClick=\"showCalcFieldbtnPressed("
					+ i
					+ ")\" >Create2</button></td>"
					+ "<td id=\"showCalcFieldTD_"
					+ i
					+ "\" ><option id=\"All\" value=\"All\">All</option></td></tr>";
		}
		str += "</table>";

		var test = document.getElementById("test");
			test.innerHTML = str;

		var frag = parser.parseElement(test, null, true);
		dojo.widget.getParser().createComponents(frag);

	}

	function showCalcFieldbtnPressed(value) {
		alert(value);

		var tt = dojo.widget.byId("showCalcMethodTD_" + value);
		alert(tt.tittle);

	}
</script>
<style type="text/css">
body {
	padding: 1em;
}

div .dojoButton {
	float: left;
	margin-left: 10px;
}
</style>
</head>

<body>
<h2>Job Application Form</h2>
<p>This is just a little demo of dojo''s form widgets</p>
<form method="get" id="form1" action="">
<divid="D1"><input type="checkbox" name="cb1"
	id="cb1" value="1" dojoType="Checkbox" /> IT<br />
<input type="checkbox" name="cb2" id="cb2" value="1" dojoType="Checkbox" />Marketing<br />
<input type="checkbox" name="cb3" id="cb3" value="1" dojoType="Checkbox"
	checked /> <label for="cb3">Business</label><br />


<input type="checkbox" name="cb8" id="cb8" value="1" dojoType="Checkbox" />
<label for="cb37">Business2</label><br />
<input type="checkbox" name="cb4" id="cb4" value="1" checked="true" />
<button dojoType="Button" widgetId="showCalcMethodbtn">Create</button>
<button dojoType="Button" widgetId="testbtn">Test</button>
</div>
<div id="chtest"></div>
<div id="test"></div>

</form>
</body>
</html>

 

 

 

FastStone Capture(FSCapture) 注册码

FastStone Capture(FSCapture) 注册码

FastStone Capture 是一款极好用的图像浏览、编辑和截屏工具,支持 BMP、JPG、JPEG、GIF、PNG、TIFF、WMF、ICO 和 TGA 在内的主流图片格式,其独有的光滑和毛刺处理技术让图片更加清晰,提供缩放、旋转、剪切、颜色调整功能。

FastStone Capture 已经支持固定区域截图和重复上次截取功能,也增强了滚动窗口截图性能,支持到各大浏览器的最新版本。除此之外,FastStone Capture 也提供了实用小工具,如屏幕录像机、屏幕放大镜、屏幕取色器、屏幕标尺、屏幕十字线等。屏幕录像机功能可以录制屏幕动作,将窗口/对象、矩形区域或全屏区域的屏幕录制为高清晰 WMV 视频。

clipboard.png

官方下载地址: https://faststone-capture.en....

注册码:

企业版序列号:
name:bluman
serial/序列号/注册码:VPISCJULXUFGDDXYAUYF

FastStone Capture 注册码 序列号:
name/用户名:TEAM JiOO
key/注册码:CPCWXRVCZW30HMKE8KQQUXW

关于FastStone Capture怎么截取固定区域-截取固定区域方法faststone capture怎么自定义滚动截图的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于.NET SkiaSharp 生成二维码验证码及指定区域截取方法实现、cad如何截取选定区域、DIV 使用Scroll来设定固定区域滚动,超出区域的显示问题。、FastStone Capture(FSCapture) 注册码等相关知识的信息别忘了在本站进行查找喔。

本文标签: