{"id":2832,"date":"2019-09-09T21:37:34","date_gmt":"2019-09-09T12:37:34","guid":{"rendered":"http:\/\/okamurax.com\/?p=2832"},"modified":"2022-10-13T14:24:16","modified_gmt":"2022-10-13T05:24:16","slug":"c-%e5%8b%95%e7%9a%84%e3%81%ab%e7%94%bb%e5%83%8f%e7%94%9f%e6%88%90","status":"publish","type":"post","link":"https:\/\/appbay.org\/?p=2832","title":{"rendered":"C# \u52d5\u7684\u306b\u753b\u50cf\u751f\u6210"},"content":{"rendered":"<p>System.Drawing<\/p>\n<pre class=\"lang:c# decode:true \">        public async Task&lt;IActionResult&gt; CreateImage()\r\n        {\r\n            using (System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(500, 80))\r\n            {\r\n                using (System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap))\r\n                {\r\n                    \/\/\u80cc\u666f\u63cf\u753b\r\n                    using (SolidBrush solidBrush = new SolidBrush(Color.White))\r\n                    {\r\n                        \/\/graphics.FillRectangle(solidBrush, new Rectangle(0, 0, 200, 200));\r\n                        graphics.FillRectangle(solidBrush, graphics.VisibleClipBounds);\r\n                    }\r\n\r\n                    \/\/ \u56f3\u5f62\u63cf\u753b\r\n                    using (SolidBrush solidBrush = new SolidBrush(Color.Blue))\r\n                    {\r\n                        graphics.DrawPie(Pens.Red, 0, 0, 80, 80, 300, 300);\r\n                    }\r\n\r\n                    \/\/ \u6587\u5b57\u63cf\u753b\r\n                    string serial = \"\u7ba1\u7406\u756a\u53f7\uff1a0001\";\r\n\r\n                    using (System.Drawing.Font font = new System.Drawing.Font(\"\u30e1\u30a4\u30ea\u30aa\", 36))\r\n                    using (SolidBrush solidBrush = new SolidBrush(Color.Black))\r\n                    {\r\n                        graphics.TextRenderingHint = TextRenderingHint.AntiAlias;\r\n                        graphics.DrawString(serial, font, solidBrush, new System.Drawing.Point(0, 0));\r\n                    }\r\n\r\n                    \/\/ Controller\u3067\u5b9f\u884c\u3059\u308b\u5834\u5408(ASP.NET)\r\n                    var ms = new MemoryStream();\r\n                    bitmap.Save(ms, System.Drawing.Imaging.ImageFormat.Png);\r\n                    ms.Position = 0;\r\n                    return new FileStreamResult(ms, \"image\/png\");\r\n\r\n                    \/\/ PictureBox\u306e\u5834\u5408\r\n                    \/\/ PictureBox1.Image = bitmap;\r\n                }\r\n            }\r\n        }<\/pre>\n<p>QR\u30b3\u30fc\u30c9\u306e\u5834\u5408(ZXing.SkiaSharp)<\/p>\n<pre class=\"lang:c# decode:true \">        public async Task&lt;IActionResult&gt; CreateImage(string? id)\r\n        {\r\n            using System.Drawing.Bitmap bitmap = new System.Drawing.Bitmap(500, 70);\r\n            using System.Drawing.Graphics graphics = System.Drawing.Graphics.FromImage(bitmap);\r\n\r\n            using (SolidBrush solidBrush = new SolidBrush(Color.White))\r\n            {\r\n                graphics.FillRectangle(solidBrush, graphics.VisibleClipBounds);\r\n            }\r\n\r\n            var writer = new BarcodeWriter\r\n            {\r\n                Format = ZXing.BarcodeFormat.QR_CODE,\r\n                Options = new ZXing.Common.EncodingOptions\r\n                {\r\n                    Width = 200,\r\n                    Height = 200,\r\n                    Margin = 2,\r\n                }\r\n            };\r\n\r\n            var ms = new MemoryStream();\r\n            var bmp = writer.Write(\"abcabc\");\r\n            bmp.Encode(ms, SKEncodedImageFormat.Png, 100);\r\n            ms.Position = 0;\r\n\r\n            return new FileStreamResult(ms, \"image\/png\");\r\n        }<\/pre>\n<p>SkiaSharp+ZXing.SkiaSharp\u3092\u5229\u7528\u30571\u3064\u306e\u753b\u50cf\u3068\u3057\u3066\u751f\u6210<\/p>\n<pre class=\"lang:c# decode:true \">        public async Task&lt;IActionResult&gt; CreateImage(string? id)\r\n        {\r\n            using SkiaSharp.SKBitmap bitmap = new SkiaSharp.SKBitmap(500, 70);\r\n            using SkiaSharp.SKCanvas canvas = new SkiaSharp.SKCanvas(bitmap);\r\n\r\n            \/\/\u80cc\u666f\u63cf\u753b1\r\n            canvas.Clear(SKColors.White);\r\n\r\n            \/\/\u80cc\u666f\u63cf\u753b2\r\n            SkiaSharp.SKPaint paint1 = new SkiaSharp.SKPaint();\r\n            paint1.Style = SkiaSharp.SKPaintStyle.Fill;\r\n            paint1.Color = SkiaSharp.SKColors.Blue;\r\n            \/\/canvas.DrawRect (canvas.LocalClipBounds, paint1);\r\n\r\n            \/\/ \u6587\u5b57\u63cf\u753b\r\n            SkiaSharp.SKPaint paint2 = new SkiaSharp.SKPaint();\r\n            paint2.Style = SkiaSharp.SKPaintStyle.Fill;\r\n            paint2.Color = SkiaSharp.SKColors.Black ;\r\n            paint2.TextSize = 36;\r\n            paint2.Typeface = SkiaSharp.SKTypeface.FromFamilyName(\"Yu Gothic UI\");\r\n            paint2.IsAntialias = true;\r\n            canvas.DrawText(\"\u7ba1\u7406\u756a\u53f7\uff1a\" + id, 70, 48, paint2);\r\n\r\n            \/\/QR\u30b3\u30fc\u30c9\u63cf\u753b\r\n            var writer = new BarcodeWriter\r\n            {\r\n                Format = ZXing.BarcodeFormat.QR_CODE,\r\n                Options = new ZXing.Common.EncodingOptions\r\n                {\r\n                    Width = 70,\r\n                    Height = 70,\r\n                    Margin = 0,\r\n                }\r\n            };\r\n\r\n            var ms = new MemoryStream();\r\n            var qr = writer.Write(Url.Content(\"\/TestTable33\/Details\/\" + id));\r\n            canvas.DrawImage(SkiaSharp.SKImage.FromBitmap(qr), new SkiaSharp.SKPoint(0,0));\r\n            bitmap.Encode(ms, SKEncodedImageFormat.Png, 100);\r\n            ms.Position = 0;\r\n            return new FileStreamResult(ms, \"image\/png\");\r\n        }<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>System.Drawing public async Task&lt;IActionResult&gt; CreateImage() { using (System.Drawing.Bitmap bitmap = ne &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/appbay.org\/?p=2832\" class=\"more-link\"><span class=\"screen-reader-text\">&#8220;C# \u52d5\u7684\u306b\u753b\u50cf\u751f\u6210&#8221; \u306e<\/span>\u7d9a\u304d\u3092\u8aad\u3080<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[9],"class_list":["post-2832","post","type-post","status-publish","format-standard","hentry","category-1","tag-c-net"],"_links":{"self":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2832","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=2832"}],"version-history":[{"count":8,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2832\/revisions"}],"predecessor-version":[{"id":5363,"href":"https:\/\/appbay.org\/index.php?rest_route=\/wp\/v2\/posts\/2832\/revisions\/5363"}],"wp:attachment":[{"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=2832"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=2832"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/appbay.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=2832"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}