36 var imgDir = Path.Combine(wwwrootPath,
"img");
37 var outPath = Path.Combine(imgDir,
"og-platform.jpg");
39 if (File.Exists(outPath))
return;
41 Directory.CreateDirectory(imgDir);
43 const int W = 1200, H = 630;
44 using var bmp =
new Bitmap(W, H, PixelFormat.Format32bppArgb);
45 using var g = Graphics.FromImage(bmp);
46 g.SmoothingMode = SmoothingMode.AntiAlias;
47 g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
50 using (var bgBrush =
new LinearGradientBrush(
51 new Point(0, 0),
new Point(W, H),
52 Color.FromArgb(253, 246, 238),
53 Color.FromArgb(238, 220, 200)))
55 g.FillRectangle(bgBrush, 0, 0, W, H);
65 var cardRect =
new RectangleF(200, 100, 800, 430);
67 Color.FromArgb(220, 255, 255, 255),
68 Color.FromArgb(80, 200, 168, 130), 2);
71 using var iconFont =
new Font(
"Segoe UI Emoji", 48, FontStyle.Regular, GraphicsUnit.Pixel);
75 using var titleFont =
new Font(
"맑은 고딕", 46, FontStyle.Bold, GraphicsUnit.Pixel);
76 DrawCenteredText(g,
"무료 모바일 청첩장", titleFont, Color.FromArgb(58, 46, 40), W / 2f, 285);
79 using var subFont =
new Font(
"맑은 고딕", 22, FontStyle.Regular, GraphicsUnit.Pixel);
81 Color.FromArgb(122, 106, 94), W / 2f, 348);
84 using var linePen =
new Pen(Color.FromArgb(128, 200, 168, 130), 1.5f);
85 g.DrawLine(linePen, 420, 382, 780, 382);
88 var badgeRect =
new RectangleF(470, 398, 260, 42);
89 using var badgeBrush =
new SolidBrush(Color.FromArgb(200, 168, 130));
91 using var badgeFont =
new Font(
"맑은 고딕", 17, FontStyle.Bold, GraphicsUnit.Pixel);
95 using var domFont =
new Font(
"Arial", 19, FontStyle.Regular, GraphicsUnit.Pixel);
97 Color.FromArgb(100, 58, 46, 40), W / 2f, 492);
100 var jpegParams =
new EncoderParameters(1);
101 jpegParams.Param[0] =
new EncoderParameter(Encoder.Quality, 92L);
102 var jpegCodec = ImageCodecInfo.GetImageEncoders()
103 .First(c => c.FormatID == ImageFormat.Jpeg.Guid);
105 bmp.Save(outPath, jpegCodec, jpegParams);
372 var path =
new GraphicsPath();
373 path.AddArc(rect.X, rect.Y, r * 2, r * 2, 180, 90);
374 path.AddArc(rect.Right - r * 2, rect.Y, r * 2, r * 2, 270, 90);
375 path.AddArc(rect.Right - r * 2, rect.Bottom - r * 2, r * 2, r * 2, 0, 90);
376 path.AddArc(rect.X, rect.Bottom - r * 2, r * 2, r * 2, 90, 90);