2016-06-17 2 views
0

У меня есть winforms C#, где Im рисует прямоугольник, а затем я его заполняю.C# Заполнение прямоугольника оставляет пустое пространство

Вот код:

LinearGradientBrush secondGradient = new LinearGradientBrush(frontRect, Color.FromArgb(255, 190, 171, 18), Color.FromArgb(255, 152, 186, 27), 90); 

    /* second row element */ 
        g.DrawRectangle(pen, leftInsertionBox); 
        g.FillRectangle(secondGradient, leftInsertionBox.X + 1, leftInsertionBox.Y + 1, leftInsertionBox.Width - 1, leftInsertionBox.Height - 1); 

        g.DrawRectangle(pen, leftCoverBox); 
        g.FillRectangle(secondGradient, leftCoverBox.X + 1, leftCoverBox.Y + 1, leftCoverBox.Width - 1, leftCoverBox.Height - 1); 
        /* second row element */ 

Проблема заключается в том, что я могу видеть, как пиксель белого пространства между моим прямоугольником линией и заливкой.

enter image description here

Любой ключ о том, как решить эту проблему?

+1

Первый 'Fill' весь прямоугольник (удалить +1 коррекций), то' Draw' –

+0

я не могу видеть изображение, потому что Imgur заблокирован для меня, но вы пробовали его с SolidBrush? – hometoast

+0

Вы пытались выполнить операции в обратном порядке? Я попытаюсь выполнить заполнение без каких-либо расчетов смещения (т. Е. Заполнить весь прямоугольник), а затем нарисовать границу после. – itsme86

ответ

1

Я бы постарался обратить вспять операции. Сначала выполните операцию заполнения, удалив вычисления смещения (т. Е. Заполните всю область), а затем нарисуйте границу.

g.FillRectangle(secondGradient, leftInsertionBox.X, leftInsertionBox.Y, leftInsertionBox.Width, leftInsertionBox.Height); 
g.DrawRectangle(pen, leftInsertionBox); 

g.FillRectangle(secondGradient, leftCoverBox.X, leftCoverBox.Y, leftCoverBox.Width, leftCoverBox.Height); 
g.DrawRectangle(pen, leftCoverBox); 
0

Попробуйте удалить дополнительный пиксель, который вы добавили.

Смежные вопросы