WPF, Viewbox

Единственото ограничение при използване на Canvas е, че графиките няма да могат да се преоразмерят до по-големи или по-малки прозорци. Това има смисъл за бутони (които не променят размера си във всички ситуации), но не е задължително за други видове графично съдържание.

Например можете да създадете сложна графика, която трябва да бъде преоразмерена, за да се възползвате от наличното пространство. WPF предоставя просто решение за ситуации като тази. За да комбинирате тънкия контрол на платното с просто преоразмеряване, използвайте елемента Viewbox.

Преглед Е прост клас, който наследява от Decorator (който е много подобен на клас Border). Приема едно дете, което се разтяга или свива, за да запълни наличното пространство. Естествено, това дете може да бъде контейнер за оформление, съдържащ множество форми (или други елементи), които могат да се променят синхронно. Въпреки това, най-често Viewbox се използва за векторна графика, а не за обикновени контроли.

Въпреки че можете да поставите една форма в Viewbox, няма реална полза. Напротив, Viewbox е най-добрият, когато е необходимо да се обгърне група от форми, които образуват цялостна картина. Обикновено контейнер Canvas се поставя във Viewbox, а вече в него - необходимите фигури.

Следващият пример поставя Viewbox с контейнер Canvas във втория ред на мрежата. Елементът Viewbox обхваща цялата височина и ширина на реда. Линията заема цялото свободно място, останало след рендирането на първата линия с автоматичен размер. По-долу е маркировката:

Фигурата показва как коригира Viewbox при промяна на размера на прозореца. Първият ред остава непроменен. Вторият ред обаче се разширява, за да запълни цялото свободно пространство. Както можете да видите, формата в Viewbox се променя пропорционално с увеличаването на прозореца.

размер който

наличното пространство

Мащабирането, извършено от Viewbox, е подобно на мащабирането, което видяхте в WPF, увеличавайки DPI. Той преоразмерява всеки елемент на екрана пропорционално, включително изображения, текст, линии и форми. Например, ако поставите обикновен бутон във Viewbox, мащабирането ще повлияе на общия му размер, текста вътре в него и ширината на граничната линия. В случай на поставяне на фигура във Viewbox, вътрешната област и границата се променят пропорционално, така че колкото повече формата нараства, толкова по-дебела става нейната граница.

По подразбиране Viewbox се мащабира пропорционално, за да поддържа съотношението на съдържанието. В настоящия пример това означава, че дори ако формата, съдържаща линиите се промени (стане по-широка или по-дълга), фигурите вътре няма да бъдат изкривени.