Создание карты из спрайтов на основе массива после нажатия кнопки - 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