나는 C#에서 Visual Studio 2013 Express로 처음부터 게임을 만들었습니다. 이 코드를 실행 때 메모리 부족 오류로 실행까지그리기 사용자 정의 글꼴 스프라이트
모든 것이 순조롭게 진행되었다 :이가 할 의미가 무엇
ExtraGraphics.DrawFont(canvas, new Bitmap(Image.FromFile("Assets\\font.gif")), sliceWidth, sliceHeight, text);
은 다음과 같습니다
public static class ExtraGraphics
{
static string[] chars = { " ", "!", "\"", "#", "$", "%", "&", "\'", "(", ")", "*", "+", ",", "-", ".", "/", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ":", ";", "<", "=", ">", "?", "@", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "[", "¬", "]", "^", "_", "`", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "{", "|", "}", "~" };
static List<string> charList = chars.ToList<string>();
public static void DrawFont(this Graphics g, Bitmap image, int width, int height, string str)
{
for (int i = 0; i < str.Length; i++)
{
g.DrawImage(image.Clone(new Rectangle(new Point(charList.IndexOf(str.Substring(i)) * width, 0), new Size(width, height)), System.Drawing.Imaging.PixelFormat.DontCare), new Point(i * width, 0)); //Line that errors.
}
}
}
이것은 내가 그것을 호출하는 방법입니다 이미지 (사용자 정의 글꼴)에서 한 줄의 문자를 가져온 다음 분할하여 입력 문자열에 따라 다른 문자를 표시하지만 str 매개 변수에 둘 이상의 문자가있는 경우 해당 오류가 발생합니다.
이것은 here을 사용하는 스프라이트입니다.
당신은'유효한 코드가 아닙니다 ... g. (image.Clone (새 사각형'로 복사 붙여 넣기 오류가 발생했습니다야만 하느니라. 어떤 기능을 사용하면 g'? –
왜 당신은을 사용하고있는'에 요구하고있다 'char's 대신'string'의 묶음이 있습니까? – itsme86
또한이 줄은 문제가 아니지만 낙타를 망가뜨린 짚으로만 쓸 수 있습니다. 객체를 적절하게 처리하지 않으면 부족할 때 OutOfMemoryException이 발생합니다 GDI 핸들 또는 너무 정리되지 않은 관리되지 않는 메모리가 있습니다. –