Как отобразить только часть элемента управления путем скрытия \ отсечения? - PullRequest
0 голосов
/ 18 января 2012

У меня есть элемент управления, полученный из System.Windows.Forms.UserControl, который помещен в настраиваемую сетку.Когда первый столбец сетки заморожен и сетка прокручивается на несколько пикселей, второй столбец становится частично видимым, так что элемент управления в этом столбце также становится частично видимым.

Чтобы добиться этого, я хочу иметь возможность отображать только ту часть элемента управления, которая видна, либо скрывая / обрезая левую часть элемента управления.

Я не хочу изменятьOnPaint элемента управления, поскольку у меня нет доступа к коду элемента управления.Я могу изменить код в сетке, где отображается элемент управления.

Я попробовал следующее, которое не сработало: 1. Обнулить только ту часть элемента управления, которая должна быть видимой.2. Используя GraphicsPath следующим образом:

System.Drawing.Drawing2D.GraphicsPath controlPath = new System.Drawing.Drawing2D.GraphicsPath();
controlPath.AddRectangle(visibleRect);
editControl.Region = new Region(controlPath);

Есть еще идеи?

1 Ответ

0 голосов
/ 23 января 2012

Я получил это рабочее решение:

Использование GraphicsPath сработало. Я не устанавливал прямоугольник клипа должным образом, из-за которого я не мог видеть, что отсечение произошло. Вместо того, чтобы установить xOffset области клипа относительно Grid, я должен был установить область клипа относительно элемента управления. Область окна - это набор пикселей в пределах окна, где операционная система разрешает рисование. Операционная система не отображает какую-либо часть окна, которая находится за пределами области окна. Координаты области элемента управления относятся к верхнему левому углу элемента управления, а не к клиентской области элемента управления (http://msdn.microsoft.com/en-us/library/ddhy6052(vs.71).aspx)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...