Как увеличить размер прямоугольника - PullRequest
2 голосов
/ 30 сентября 2010

Я хочу увеличить размер моего прямоугольника на 10 пикселей.Следующий код, кажется, не работает.Предположим, sampleRect - мой прямоугольник.Пожалуйста, дайте мне знать.

Rectangle temp = new Rectangle(
    sampleRect.X - 10, 
    sampleRect.Y - 10, 
    sampleRect.Width + 2*10, 
    sampleRect.Height + 2*10); 

Ответы [ 4 ]

11 голосов
/ 30 сентября 2010

Это будет работать, но вы можете написать то же самое более элегантно, используя метод Inflate :

rect.Inflate(10, 10);

Одно важное отличие между вашим подходом и методом Inflateчто вы создаете новый экземпляр прямоугольника, в то время как Inflate изменяет существующий прямоугольник.

1 голос
/ 30 сентября 2010

В зависимости от вашего определения «расти на 10 пикселей», вот что я бы сделал:

int size = 10;
int halfSize = size/2;
Rectangle temp = new Rectangle(
    sampleRect.X - halfSize, 
    sampleRect.Y - halfSize, 
    sampleRect.Width + size, 
    sampleRect.Height + size); 
1 голос
/ 30 сентября 2010

Я не уверен, почему вы спросите «будет ли это работать» - попробуйте!

Однако

 someRectangle.Inflate(10,20);
 //or 
 someRectangle.Inflate(10);

должно работать

0 голосов
/ 30 сентября 2010

Код, который у вас есть, создаст новый прямоугольник с координатами x, y -10 по сравнению с sampleRect. Чтобы компенсировать это, вы увеличиваете ширину и высоту на 20.

Я предполагаю, что вы пытаетесь увеличить прямоугольник вокруг центра, в этом случае вам нужно переместить прямоугольник на половину нового увеличения.

Пример:

var sizeIncrease = 10;
var newX = sampleRect.X - 0.5 * sizeIncrease;
var newY = sampleRect.Y - 0.5 * sizeIncrease;
var newWidth = sampleRect.Width + sizeIncrease;
var newHeight = sampleRect.Height + sizeIncrease;

Эти значения должны дать вам то, что вы ищете

Rectangle.Inflate также изменит размер вокруг центра.

...