for (int x = 0; x < 500; x++)
{
float factor = 2;
rectf.X = x*factor;
rectf.Y = 0;
rectf.Width = fact;
rectf.Height = 500;
// should draw bitmap as 2 pixels wide
// but draws it with white slim stripes in between
// each bitmap colomn
gr.DrawImage(bitmap, rectf);
}
это твой фрагмент. и вы настаиваете, что should draw bitmap as 2 pixels wide
. извините, но это так неправильно. Я объясню почему. давайте посмотрим, как работает этот цикл.
x=0
Вы устанавливаете верхнюю левую координату х на ноль. rectf.X = x*factor;
gr.DrawImage (точечный рисунок, rectf); Вы рисуете растровое изображение шириной 1 пиксель в прямоугольнике, начиная с координаты х, равной 0.
цикл заканчивается, х становится 1.
координата левого верхнего x теперь равна 2.
рисование растрового изображения шириной 1 пиксель в прямоугольнике, начиная с координата x, равная 2. (как вы видите, без растрового изображения @ x = 1)
Должен ли я продолжать или ясно, почему появляются белые полосы и откуда?
чтобы исправить это используйте этот фрагмент
for (int x = 0; x < 500; x++)
{
float factor = 2;
rectf.X = x * factor; // x coord loops only through even numbers, thus there are white stripes
rectf.Y = 0;
rectf.Width = factor;
rectf.Height = 500;
// should draw bitmap as 2 pixels wide
// but draws it with white slim stripes in between
// each bitmap colomn
gr.DrawImage(bitmap, rectf);
rectf.X = x * factor + 1; // now x coord also loops through odd numbers, and combined with even coords there will be no white stripes.
gr.DrawImage(bitmap, rectf);
}
P.S. Чего ты пытаешься достичь? А слышали ли вы о Graphics.FillRectangle () метод?