Полирана стоманена четка в WPF?

Търся идеи за създаване на WPF четка с изгладен стоманен вид, подобен на стила на MacOSX Panther, за предпочитане без да прибягвам до ImageBrush. Има ли забавен начин да използвате GradientBrush за създаване на този ефект?

Благодаря предварително!


person Jens    schedule 19.08.2010    source източник
comment
Има ли причина, поради която не искате да използвате ImageBrush? Не мисля, че има лесен начин да го направите с други четки...   -  person Thomas Levesque    schedule 19.08.2010
comment
@Томас: Подозирах това. ImageBrush се мащабира зле, нали? Оптимално четката ще изглежда еднакво както на моя работен плот с 96 DPI, така и на моето вградено устройство с 200 DPI. Но ако знаете урок за това как да проектирате подходящо изображение, аз също ще го оценя =)   -  person Jens    schedule 19.08.2010


Отговори (2)


Не знам как да направя това лесно с програмни четки, но когато използвах Photoshop, за да създам ефект на четкана стомана, по същество създадох шум, след което го размазах (замъглих) в посоката на четка:

http://www.adamdorman.com/tutorials/brushed_steel_tutorial.php

Както някой спомена в коментарите, може да искате да направите това и да създадете някакъв вид (повтаряща се?) четка за изображения. Ако искате ефектът ви от четкана стомана да бъде генериран програмно, можете да напишете среден филтър, който да направи размазването вместо вас. Генерирането на шум е достатъчно просто :)

Пример за прилагане на среден филтър:

http://homepages.inf.ed.ac.uk/rbf/HIPR2/mean.htm

Променете това, за да имате матрица Nx1 или да имате малки (нула) за тегла, които не са на текущия ред, и ще имате хоризонтално размазване.

person Merlyn Morgan-Graham    schedule 20.08.2010
comment
Благодаря за отговора! Това няма да е лесно за възпроизвеждане като WPF четка, но може да си струва да опитате. Ще оставя въпроса отворен още малко =) - person Jens; 23.08.2010

Можете да използвате завъртяна LinearGradientBrush с много GradientStops в различни сиви тонове. Е, това е поне подход. За да бъде мащабируем, по някакъв начин ще трябва да направите GradientStops само един пиксел широк, което вероятно изисква да дадете размера на запълнения обект на четката, предполагам. Може да се окаже трудна задача, но това е съдбата на истинския хакер, нали?

person Hendrik Wiese    schedule 20.08.2010