2016-09-23 5 views
0

Мой вопрос такой же, как по следующей ссылкеРисование линии с градиентом цвета с VC++ и MFC

Drawing a line with a gradient color

мне нужно нарисовать кривую с цветовым градиентом. Цвет должен быть очень синим до синего. Мне нужно сделать это с помощью VC++ и MFC. Класс CPen, по-видимому, предоставляет только возможность использования LOGBRUSH. Существуют варианты использования различных градиентных кистей с закрытыми формами, но не с линиями или кривыми. У меня есть планы рисовать кривые в небольших сегментах линий с каждым сегментом разного оттенка, образуя таким образом градиент. Их проще?

+0

Я хотел бы предложить вам пойти с точки вместо строки. Пример в MSDN поможет вам «https://msdn.microsoft.com/en-us/library/windows/desktop/ms536070(v=vs.85).aspx» –

+0

@SantoshDhanawade Link не работает. – Ram

+0

https://msdn.microsoft.com/en-us/library/windows/desktop/ms536070(v=vs.85).aspx –

ответ

1

Вы можете сделать это с Gdi+

Сначала необходимо инициализировать Gdi + См, например, это link.

#include <Gdiplus.h> 
using namespace Gdiplus; 
... 

struct GdiplusInit { 
    GdiplusInit() { 
     GdiplusStartupInput inp; 
     GdiplusStartupOutput outp; 
     GdiplusStartup(&token_, &inp, &outp); 
    } 
    ~GdiplusInit() { 
     GdiplusShutdown(token_); 
    } 
private: 
    ULONG_PTR token_; 
} gdiplusInit; //This will initialize Gdi+ once, and shuts it down on exit 

Чтобы дублировать # пример C в вашем вопросе:

void CMyWnd::OnPaint() 
{ 
    CPaintDC dc(this); 

    Graphics gr(dc); 

    Point x = Point(0, 0); 
    Point y = Point(100, 100); 

    LinearGradientBrush brush(x, y, Color(255, 255, 255), Color(255, 0, 0)); 
    Gdiplus::Pen pen(&brush, 2.0f); 
    gr.DrawLine(&pen, x, y); 

}