2016-01-06 1 views
0

У меня было мало удачи, пытаясь найти ответ на это как на stackoverflow, так и в Интернете в целом.vb 2015 GDI + растровое размещение

У меня есть форма в проекте Windows Forms vb 2015 года.

В этой форме я разместил шесть элементов управления: четыре текстовых поля, панель и кнопку.

При нажатии на кнопку, она генерирует растровое изображение, например так:

Private Sub btnSetLeft_Click(sender As Object, e As EventArgs) Handles btnSetLeft.Click 
    Dim R As Integer = CInt(txtRedLeft.Text) 
    Dim G As Integer = CInt(txtGreenLeft.Text) 
    Dim B As Integer = CInt(txtBlueLeft.Text) 
    Dim A As Integer = CInt(txtAlphaLeft.Text) 
    gcL = Color.FromArgb(A, R, G, B) 
    Using bm As Bitmap = New Bitmap(9, 9) 
     Using gBM As Graphics = Graphics.FromImage(bm) 
      Using br As SolidBrush = New SolidBrush(gcL) 
       gBM.FillRectangle(br, New Rectangle(0, 0, 8, 8)) 
      End Using 
     End Using 
    End Using 
End Sub 

Но, после построения растрового изображения, я хочу кнопку, чтобы поместить растровое изображение на панели, а затем перекрасить панель, таким образом, отображение нового растрового изображения.

Как это сделать?

+0

'thePanel.BackgroundImage = bm' вам придется удалить его из ПРИМЕНЕНИЯ блока, чтобы вы не избавиться от него, и это означает, что если вы нажмите снова, вы должны избавиться от старого (или повторного использования одного) – Plutonix

ответ

0

Это не слишком сложно (я упростил ваш пример):

Dim gcL As Color = Color.Blue 
Using bm As New Bitmap(9, 9) 
    Using gBM As Graphics = Graphics.FromImage(bm) 
     Using br As New SolidBrush(gcL) 
      gBM.FillRectangle(br, New Rectangle(0, 0, 8, 8)) 
     End Using 
    End Using 
    panel1.BackgroundImage = bm 
    panel1.BackgroundImageLayout = ImageLayout.Tile 
    panel1.Update() 
End Using 
+0

Спасибо - панель значительно больше, чем растровое изображение, и я не хочу использовать ее в качестве фонового изображения панели. Вместо этого я хочу разместить растровое изображение в определенной позиции на панели. – mdavidjohnson

+0

У вас может быть два растровых изображения. Один заполнит панель. Вы можете «нарисовать» свою меньшую растровую карту в любом месте на более крупном растровом изображении. –

+0

Если нет возможности установить его прямо на панель, я полагаю, я мог бы это сделать. Но, как-то, размещение его прямо на панели кажется более элегантным. (вздох). Как бы выглядел код для рисования меньшего растрового изображения на более крупном? – mdavidjohnson