вот так на картинку вписывается текст. public static void Pechat() { string FirstText = "привет Лолзтим, ты крут"; string[] array = FirstText.Split(' '); int counterOfWords = 0; float horizontal = 250; float verticalForChertej = 150; float horizontal1 = 260; float vertica1l = 135; float horizontal2 = 120; float vertical2 = 150; int x = 20; for (int i = 0; i < array.Length; i++) { counterOfWords++; } if (counterOfWords > 2) { int counter = 0; Image img = Bitmap.FromFile(@"D:\scriptscheats\sert.jpg"); for (int i = 0; i < counterOfWords; i++) { if (counter < 7) { ++counter; Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal1, vertica1l); horizontal1 += 35; graph = null; //img = null; } else { Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal2, vertical2); horizontal2 += 25; graph = null; } } img.Save(@"D:\scriptscheats\sert" + "1" + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); MessageBox.Show("Выполнено"); } else if (counterOfWords <= 2) { Image img = Bitmap.FromFile(@"D:\scriptscheats\sert.jpg"); for (int i = 0; i < counterOfWords; i++) { Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal1, vertica1l); horizontal1 += 25; graph = null; //img = null; MessageBox.Show("Выполнено"); } img.Save(@"D:\scriptscheats\sert" + "1" + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } } Код public static void Pechat() { string FirstText = "привет Лолзтим, ты крут"; string[] array = FirstText.Split(' '); int counterOfWords = 0; float horizontal = 250; float verticalForChertej = 150; float horizontal1 = 260; float vertica1l = 135; float horizontal2 = 120; float vertical2 = 150; int x = 20; for (int i = 0; i < array.Length; i++) { counterOfWords++; } if (counterOfWords > 2) { int counter = 0; Image img = Bitmap.FromFile(@"D:\scriptscheats\sert.jpg"); for (int i = 0; i < counterOfWords; i++) { if (counter < 7) { ++counter; Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal1, vertica1l); horizontal1 += 35; graph = null; //img = null; } else { Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal2, vertical2); horizontal2 += 25; graph = null; } } img.Save(@"D:\scriptscheats\sert" + "1" + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); MessageBox.Show("Выполнено"); } else if (counterOfWords <= 2) { Image img = Bitmap.FromFile(@"D:\scriptscheats\sert.jpg"); for (int i = 0; i < counterOfWords; i++) { Graphics graph = Graphics.FromImage(img); graph.DrawString(array[i], new Font("MS Reference Sans Serif", (float)6.5), new SolidBrush(Color.Gray), horizontal1, vertica1l); horizontal1 += 25; graph = null; //img = null; MessageBox.Show("Выполнено"); } img.Save(@"D:\scriptscheats\sert" + "1" + ".jpg", System.Drawing.Imaging.ImageFormat.Jpeg); } }
Minin_inactive4471240, Условие такого, что если в тесте больше 7 слов, то текст переносится на другую строчку смещением vertical += 25 --- Сообщение объединено с предыдущим 12 мар 2022 Но текст всё равно по-дурацки пишется, хоть horizontal ставь 35
Чел, ты жжешь :) for (int i = 0; i < array.Length; i++) { counterOfWords++; } Код for (int i = 0; i < array.Length; i++) { counterOfWords++; }
Minin_inactive4471240, Ни на что не влияет, просто взгляд зацепился. Ты бы объяснил в чём именно проблема, а то нихера не понятно чего ты хочешь добиться. И повторяющийся код с рисованием вынеси в параметрируемый метод, тоже сильно облегчит понимание кода.
vtlstolyarov, добиться я хочу того, чтобы слова при нанесении на картинку не налазили друг на друга, как у меня получается
Minin_inactive4471240, так? public static void Pechat() { var imagePath = @"D:\scriptscheats\sert.jpg"; using (Image img = Bitmap.FromFile(imagePath)) { Write(img, "привет Лолзтим, ты крут. Причём не просто крут, а супер-пупер-охуенно крут", new Rectangle(260, 135, 100, 15)); img.Save(System.IO.Path.ChangeExtension(imagePath, "1.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); } MessageBox.Show("Выполнено"); } private static void Write(Image image, string text, Rectangle firstLine) { using (Font font = new Font("MS Reference Sans Serif", 6.5f)) using (Brush brush = new SolidBrush(Color.Gray)) using (Graphics graphics = Graphics.FromImage(image)) { var words = new Queue<string>(text.Split(' ')); for (var y = firstLine.Y; words.Any(); y += firstLine.Height) { var lineText = words.Dequeue(); for (var tryText = lineText; words.Any() && graphics.MeasureString(tryText += " " + words.Peek(), font).Width < firstLine.Width; words.Dequeue()) { lineText = tryText; } graphics.DrawString(lineText, font, brush, firstLine.X, y); } } } C# public static void Pechat() { var imagePath = @"D:\scriptscheats\sert.jpg"; using (Image img = Bitmap.FromFile(imagePath)) { Write(img, "привет Лолзтим, ты крут. Причём не просто крут, а супер-пупер-охуенно крут", new Rectangle(260, 135, 100, 15)); img.Save(System.IO.Path.ChangeExtension(imagePath, "1.jpg"), System.Drawing.Imaging.ImageFormat.Jpeg); } MessageBox.Show("Выполнено"); } private static void Write(Image image, string text, Rectangle firstLine) { using (Font font = new Font("MS Reference Sans Serif", 6.5f)) using (Brush brush = new SolidBrush(Color.Gray)) using (Graphics graphics = Graphics.FromImage(image)) { var words = new Queue<string>(text.Split(' ')); for (var y = firstLine.Y; words.Any(); y += firstLine.Height) { var lineText = words.Dequeue(); for (var tryText = lineText; words.Any() && graphics.MeasureString(tryText += " " + words.Peek(), font).Width < firstLine.Width; words.Dequeue()) { lineText = tryText; } graphics.DrawString(lineText, font, brush, firstLine.X, y); } } }