В строке 8 вы рисуете bmp
на bmp2
.Все, что вы делаете потом с помощью gfx
, по-прежнему влияет на bmp2
.
В строке 9 вы создали новое растровое изображение и присвоили gfx
растровому изображению, подразумевая, что вы будете рисовать на bmp
с gfx
(что вы не сделали в любом случае).Затем вы переходите к сохранению bmp
, которое дало вам пустое или, как вы его описали, «прозрачное» изображение.
Если вы пытаетесь удвоить размер изображения, вы можете пересмотреть кодк чему-то в этом роде:
Private Sub DrawNewImage()
Dim bmp = New Bitmap("C:\Path\to\file.bmp")
Dim Width = bmp.Width
Dim Height = bmp.Height
Dim w2 As Integer = PowerOf2(Width)
Dim h2 As Integer = PowerOf2(Height)
Dim bmp2 = New Bitmap(w2, h2)
Dim gfx = Graphics.FromImage(bmp2)
gfx.DrawImage(bmp, 0, 0, w2, h2)
bmp2.Save("C:\Path\to\saved\file.bmp")
End Sub
Private Function PowerOf2(ByVal value As Integer) As Integer
Return value * value
End Function
или вы можете попробовать преобразованную версию C #:
private void DrawNewImage()
{
Bitmap bmp = new Bitmap("C:\\Path\\to\\file.bmp");
int Width = bmp.Width;
int Height = bmp.Height;
int w2 = PowerOf2(Width);
int h2 = PowerOf2(Height);
Bitmap bmp2 = new Bitmap(w2, h2);
Graphics gfx = Graphics.FromImage(bmp2);
gfx.DrawImage(bmp, 0, 0, w2, h2);
bmp2.Save("C:\\Path\\to\\saved\\file.bmp");
}
private int PowerOf2(int value)
{
return value * value;
}