C\#밑그림 에서 텍스트 와 그림 을 동적 으로 생 성 합 니 다.
/// <summary>
///
/// </summary>
/// <param name="g"> </param>
/// <param name="path"> </param>
/// <param name="totalWidth"> </param>
/// <param name="totalHeight"> </param>
/// <param name="px"> X </param>
/// <param name="py"> Y </param>
private void FontPic(ref Graphics g, string path, int totalWidth, int totalHeight, int px, int py)
{
if (File.Exists(path))
{
var pImg = Image.FromFile(path);
// ,
if (totalHeight < pImg.Height && totalWidth < pImg.Width)
{
Image newPic = GetReducedImage(pImg, totalWidth, totalHeight);
if (newPic != null)
{
DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);
}
}
else if (totalHeight < pImg.Height && totalWidth >= pImg.Width)
{
Image newPic = GetReducedImage(pImg, pImg.Width, totalHeight);
if (newPic != null)
{
DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);
}
}
else if (totalHeight >= pImg.Height && totalWidth < pImg.Width)
{
Image newPic = GetReducedImage(pImg, totalWidth, pImg.Height);
if (newPic != null)
{
DrawPic(ref g, totalWidth, totalHeight, px, py, newPic);
}
}
else
{
DrawPic(ref g, totalWidth, totalHeight, px, py, pImg);
}
}
}
/// <summary>
///
/// </summary>
/// <param name="g"> </param>
/// <param name="totalWidth"> </param>
/// <param name="totalHeight"> </param>
/// <param name="px"> X </param>
/// <param name="py"> Y </param>
/// <param name="pImg"> </param>
private void DrawPic(ref Graphics g, int totalWidth, int totalHeight, int px, int py, Image pImg)
{
px += GetValue(totalWidth, pImg.Width);
py += GetValue(totalHeight, pImg.Height);
g.DrawImage(new Bitmap(pImg, new Size(GetSize(totalWidth, pImg.Width), GetSize(totalHeight, pImg.Height))),
new Rectangle(px, py, totalWidth, totalHeight),
0, 0, totalWidth, totalHeight, GraphicsUnit.Pixel);
}
/// <summary>
/// 1, Image
/// </summary>
/// <param name="width"> </param>
/// <param name="height"> </param>
/// <returns> Image </returns>
public Image GetReducedImage(Image resourceImage, int width, int height)
{
try
{
Image data = null;
// Bitmap
using (Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppArgb))
{
// Image Graphics
using (Graphics graphics = Graphics.FromImage(bitmap))
{
//
//graphics.Clear(Color.Transparent);
//
graphics.DrawImage(resourceImage, new Rectangle(0, 0, width, height));
}
data = new Bitmap(bitmap);
}
return data;
}
catch (Exception e)
{
throw e;
}
}
/// <summary>
/// , ( )
/// </summary>
/// <param name="total"> </param>
/// <param name="width"> </param>
/// <returns></returns>
public int GetSize(int total, int width)
{
if (total > width)
{
return width;
}
else
{
return total;
}
}
/// <summary>
/// ( )
/// </summary>
/// <param name="total"> </param>
/// <param name="width"> </param>
/// <returns></returns>
private int GetValue(int total, int width)
{
return (total - width) / 2;
}
/// <summary>
///
/// </summary>
/// <param name="g"> </param>
/// <param name="pointX"> x </param>
/// <param name="pointY"> y </param>
/// <param name="word"> </param>
/// <param name="textWidth"> </param>
/// <param name="textHeight"> </param>
private static void DrawStringWord(Graphics g, int pointX, int pointY, string word, int textWidth, int textHeight, int fontSize = 30)
{
Font font = new Font(" ", fontSize, (FontStyle.Regular));
RectangleF textArea = new RectangleF(pointX, pointY, textWidth, textHeight);
Brush brush = new SolidBrush(Color.Black);
g.DrawString(word, font, brush, textArea);
}
이 방면 의 조작 이 필요 한 친구 에 게 도움 이 되 기 를 바 랍 니 다.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.