Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Мультимедия, OpenGL/DirectX > GDI+ LinearGradientBrush. как поменять Rect


Автор: Nastya 27.9.2006, 13:43
Вот такая задача. 
1. В одномместе создается кисть, ей задаются LinearGradientMode и InterpolationColor
2. В других местах надо ей закрашивать прямоугольники (много и разных smile ) но так что бы rect прямоугольника и rect кисти были одинаковые

Так как для кисти в тем или иным способом но Rect надо задать в конструкторе я ставлю его = {0,0,1,1}
А потом делаю:

Код

        Matrix S;
        lb->GetTransform(&S);
        lb->ScaleTransform(w , h , MatrixOrderPrepend);
        g->FillRectangle(br, 0, 0, w, h);
        lb->SetTransform(&S);


где g - Graphics, ld - та самая кисть, а w h - высота и ширина соответственно.

Но работает не правильно.
Как это можно сделать.
Если создавть новую кисть на основе  InterpolationColor старой, то не понятно от куда взять и как поставить LinearGradientMode 

Заранее спасибо за советы smile

Автор: Nastya 4.10.2006, 16:03
Что совсем- совсем не кто не подскажет :'(
Тоды хоть киньке доку по GDI+, где ьы рассказывалась про все эти  матрицы трансформации 

Автор: Nastya 5.10.2006, 14:11
поменяла на этот код
Код

        Matrix S;    
        lb->GetTransform(&S);    
        lb->ScaleTransform(w , h , MatrixOrderPrepend);    
        g->FillRectangle(br, 0, 0, w, h);    
        lb->SetTransform(&S);

И вроде все заработала. Почему не понимаю smile

Добавлено @ 14:11 
сорри, код такой :
Код


        Matrix S;    
       g->GetTransform(&S);    
     g->ScaleTransform(w , h , MatrixOrderPrepend);    
        g->FillRectangle(br, 0, 0, w, h);    
       g->SetTransform(&S);

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)