Создание карты из спрайтов на основе массива после нажатия кнопки - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д