How to scale a bitmap without antialiasing
up vote
-1
down vote
favorite
Creating a Bitmap that is really small (3 x 6 in this case). I need to display it in a picture box without antialiasing. Here is how I am scaling now:
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
The resulting image is very munged:
The image is built using 0 - 255 RGB using the data below:
2 | 1 |
2 | 12 |
1 | 16 |
3 | 5 |
2 | 6 |
3 | 4 |
The pixel color is set by making the highest number (16) = 255, 255,2555 with zero being 0,0,0 or black.
Full code:
public System.Drawing.Bitmap SliceBMP(Slice s, Axis axis = Axis.x)
{
s = CheckSlice(s);
int max = GetMaxCount(s);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(s.ZEnd - s.ZBegin + 1, s.YEnd-s.YBegin+1 );
switch (axis)
{
case Axis.x:
for (int b = s.YBegin; b <= s.YEnd; b++)
{
for (int c = s.ZBegin; c <= s.ZEnd; c++)
{
double count = (double)_grid[s.XBegin][b][c].Count;
int color = (int)((count / max)*500.0);
if(color > 255)
{
color = 255;
}
image.SetPixel(
c - s.ZBegin,
s.YEnd - b,
System.Drawing.Color.FromArgb(color, color, color)
);
}
}
break;
}
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
return image;
}
Where it's called:
pictureBox1.Image = sliceImage;
pictureBox1.Width = sliceImage.Width;
pictureBox1.Height = sliceImage.Height;
pictureBox1.Refresh();
c# bitmap scale
add a comment |
up vote
-1
down vote
favorite
Creating a Bitmap that is really small (3 x 6 in this case). I need to display it in a picture box without antialiasing. Here is how I am scaling now:
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
The resulting image is very munged:
The image is built using 0 - 255 RGB using the data below:
2 | 1 |
2 | 12 |
1 | 16 |
3 | 5 |
2 | 6 |
3 | 4 |
The pixel color is set by making the highest number (16) = 255, 255,2555 with zero being 0,0,0 or black.
Full code:
public System.Drawing.Bitmap SliceBMP(Slice s, Axis axis = Axis.x)
{
s = CheckSlice(s);
int max = GetMaxCount(s);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(s.ZEnd - s.ZBegin + 1, s.YEnd-s.YBegin+1 );
switch (axis)
{
case Axis.x:
for (int b = s.YBegin; b <= s.YEnd; b++)
{
for (int c = s.ZBegin; c <= s.ZEnd; c++)
{
double count = (double)_grid[s.XBegin][b][c].Count;
int color = (int)((count / max)*500.0);
if(color > 255)
{
color = 255;
}
image.SetPixel(
c - s.ZBegin,
s.YEnd - b,
System.Drawing.Color.FromArgb(color, color, color)
);
}
}
break;
}
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
return image;
}
Where it's called:
pictureBox1.Image = sliceImage;
pictureBox1.Width = sliceImage.Width;
pictureBox1.Height = sliceImage.Height;
pictureBox1.Refresh();
c# bitmap scale
2
Better use DrawImage andg.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..
– TaW
Nov 11 at 8:15
Or just keep your image small and zoom it on thePictureBox
. The note onPixelOffsetMode
given by TaW still applies, though.
– Nyerguds
Nov 13 at 14:07
add a comment |
up vote
-1
down vote
favorite
up vote
-1
down vote
favorite
Creating a Bitmap that is really small (3 x 6 in this case). I need to display it in a picture box without antialiasing. Here is how I am scaling now:
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
The resulting image is very munged:
The image is built using 0 - 255 RGB using the data below:
2 | 1 |
2 | 12 |
1 | 16 |
3 | 5 |
2 | 6 |
3 | 4 |
The pixel color is set by making the highest number (16) = 255, 255,2555 with zero being 0,0,0 or black.
Full code:
public System.Drawing.Bitmap SliceBMP(Slice s, Axis axis = Axis.x)
{
s = CheckSlice(s);
int max = GetMaxCount(s);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(s.ZEnd - s.ZBegin + 1, s.YEnd-s.YBegin+1 );
switch (axis)
{
case Axis.x:
for (int b = s.YBegin; b <= s.YEnd; b++)
{
for (int c = s.ZBegin; c <= s.ZEnd; c++)
{
double count = (double)_grid[s.XBegin][b][c].Count;
int color = (int)((count / max)*500.0);
if(color > 255)
{
color = 255;
}
image.SetPixel(
c - s.ZBegin,
s.YEnd - b,
System.Drawing.Color.FromArgb(color, color, color)
);
}
}
break;
}
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
return image;
}
Where it's called:
pictureBox1.Image = sliceImage;
pictureBox1.Width = sliceImage.Width;
pictureBox1.Height = sliceImage.Height;
pictureBox1.Refresh();
c# bitmap scale
Creating a Bitmap that is really small (3 x 6 in this case). I need to display it in a picture box without antialiasing. Here is how I am scaling now:
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
The resulting image is very munged:
The image is built using 0 - 255 RGB using the data below:
2 | 1 |
2 | 12 |
1 | 16 |
3 | 5 |
2 | 6 |
3 | 4 |
The pixel color is set by making the highest number (16) = 255, 255,2555 with zero being 0,0,0 or black.
Full code:
public System.Drawing.Bitmap SliceBMP(Slice s, Axis axis = Axis.x)
{
s = CheckSlice(s);
int max = GetMaxCount(s);
System.Drawing.Bitmap image = new System.Drawing.Bitmap(s.ZEnd - s.ZBegin + 1, s.YEnd-s.YBegin+1 );
switch (axis)
{
case Axis.x:
for (int b = s.YBegin; b <= s.YEnd; b++)
{
for (int c = s.ZBegin; c <= s.ZEnd; c++)
{
double count = (double)_grid[s.XBegin][b][c].Count;
int color = (int)((count / max)*500.0);
if(color > 255)
{
color = 255;
}
image.SetPixel(
c - s.ZBegin,
s.YEnd - b,
System.Drawing.Color.FromArgb(color, color, color)
);
}
}
break;
}
image = new System.Drawing.Bitmap(image, image.Width * 10, image.Height * 10);
return image;
}
Where it's called:
pictureBox1.Image = sliceImage;
pictureBox1.Width = sliceImage.Width;
pictureBox1.Height = sliceImage.Height;
pictureBox1.Refresh();
c# bitmap scale
c# bitmap scale
asked Nov 11 at 0:34
Eric Snyder
14718
14718
2
Better use DrawImage andg.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..
– TaW
Nov 11 at 8:15
Or just keep your image small and zoom it on thePictureBox
. The note onPixelOffsetMode
given by TaW still applies, though.
– Nyerguds
Nov 13 at 14:07
add a comment |
2
Better use DrawImage andg.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..
– TaW
Nov 11 at 8:15
Or just keep your image small and zoom it on thePictureBox
. The note onPixelOffsetMode
given by TaW still applies, though.
– Nyerguds
Nov 13 at 14:07
2
2
Better use DrawImage and
g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..– TaW
Nov 11 at 8:15
Better use DrawImage and
g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..– TaW
Nov 11 at 8:15
Or just keep your image small and zoom it on the
PictureBox
. The note on PixelOffsetMode
given by TaW still applies, though.– Nyerguds
Nov 13 at 14:07
Or just keep your image small and zoom it on the
PictureBox
. The note on PixelOffsetMode
given by TaW still applies, though.– Nyerguds
Nov 13 at 14:07
add a comment |
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53244781%2fhow-to-scale-a-bitmap-without-antialiasing%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
2
Better use DrawImage and
g.InterpolationMode = InterpolationMode.NearestNeighbor; g.PixelOffsetMode = PixelOffsetMode.Half;
. Built-in scaling will always try to make it nice even when you don't want it..– TaW
Nov 11 at 8:15
Or just keep your image small and zoom it on the
PictureBox
. The note onPixelOffsetMode
given by TaW still applies, though.– Nyerguds
Nov 13 at 14:07