Создание карты из спрайтов на основе массива после нажатия кнопки - Visual Basic .NET
Формулировка задачи:
VB 2015. С помощью нехитрых алгоритмов генерируется массив 40х40. За каждым значением закреплено определенное изображение 16х16 пикселей (допустим, что 0 - нет спрайта, 1 - есть спрайт).
Необходимо эту совокупность всецело выводить в один-единственный элемент (предположительно PictureBox) по каждому нажатию клавиши без значительных задержек.
Реализовывал это раньше через FlowLayoutPanel и 1600 отдельных PictureBox, но это сильно отжирает ресурсы компьютера при первоначальной отрисовке и не позволяет грамотно использовать скроллинг изображения внутри элемента-панели. Использую циклы, m как номер столбца, n на номер строки.
P.S. С System.Drawing не дружу, ибо компилятор не любит, когда "e As EventArg" в другом сабе становится "e As PaintEventArg" (пишет, что невозможно привести к этому типу).
Решение задачи: «Создание карты из спрайтов на основе массива после нажатия кнопки»
textual
Листинг программы
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Using g As Graphics = Panel1.CreateGraphics Dim img As Image = Image.FromFile("c:\01.png") Dim cell(1599) As Rectangle For i = 0 To cell.Length - 1 cell(i) = New Rectangle With cell(i) .Width = 16 .Height = 16 .X = (i Mod 40) * 16 .Y = (i \ 40) * 16 End With g.DrawImage(img, cell(i).Location) 'g.DrawRectangle(Pens.Black, cell(i)) Next End Using End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д