AIMP Forum
AIMP for Windows => Дополнения / Addons => Разработка / Development => Тема начата: wisone от Июля 20, 2020, 17:56:55
-
Как правильно работать с DC в методе Draw.
-
https://docs.microsoft.com/en-us/windows/win32/gdi/device-contexts
-
Могу рисовать визуал по ДК. Я создал Canvas и менял его Handle на DC. При этом я получил возможность рисовать визуал но если изменить цвет в Pen.Color то в визуале этого не видно
-
Могу рисовать визуал по ДК. Я создал Canvas и менял его Handle на DC. При этом я получил возможность рисовать визуал но если изменить цвет в Pen.Color то в визуале этого не видно
Покажите ваш код
-
var Width, Height: Integer;
procedure Draw(DC: HDC; Data: PAIMPVisualData);
var Canvas: TCanvas;
begin
Canvas := TCnvas.Create;
Canvas.Handle := DC;
SetDCPenColor(DC, $00FF00); // не работает
Canvas.Pen.Color := $00FF00; // не работает
Canvas.Width := 2; // не работает
Canvas.Rectangle(0, 0, Width, Height); // работает
Canvas.TextOut(5, 5, 'Text'); // у меня работает
Canvas.Free;
end;
// Width = IAIMPEmbeddedVisualization.Initialize.Width
// примерно так и у меня. Пробую изменить цвет в Pen.Color но не работает и рисует только с параметрами по умолчанию
-
А CreatePen() и SelectObject() разве не надо?
-
var Width, Height: Integer;
procedure Draw(DC: HDC; Data: PAIMPVisualData);
var Canvas: TCanvas;
begin
Canvas := TCnvas.Create;
Canvas.Handle := DC;
SetDCPenColor(DC, $00FF00); // не работает
Canvas.Pen.Color := $00FF00; // не работает
Canvas.Width := 2; // не работает
Canvas.Rectangle(0, 0, Width, Height); // работает
Canvas.TextOut(5, 5, 'Text'); // у меня работает
Canvas.Free;
end;
// Width = IAIMPEmbeddedVisualization.Initialize.Width
// примерно так и у меня. Пробую изменить цвет в Pen.Color но не работает и рисует только с параметрами по умолчанию
Учите матчасть. Назначение цвета Pen / Brush ничего рисует
-
А CreatePen() и SelectObject() разве не надо?
Это делается само внутри класса TPen
-
То есть создание TCanvas правильно и надо создать TPen отдельно?
-
То есть создание TCanvas правильно и надо создать TPen отдельно?
Нет. Пожалуйста, прочитайте какой-нибудь самоучитель по классам дельфи или по работе с графикой в win32 api
-
А CreatePen() и SelectObject() разве не надо?
Вот это мне помогло. Ну и все равно повторно буду изучать классов win32. Спасибо вам.
-
Это делается само внутри класса TPen
А разве при работе с DC (не с TCanvas) по-другому можно изменить параметры пера, кисти, шрифта?
-
А разве при работе с DC (не с TCanvas) по-другому можно изменить параметры пера, кисти, шрифта?
Конечно нет, но автор изначально говорил про TCanvas. Миксовать win32 api и дельфевские классы лучше не стоит - запросто может возникнуть рассинхронизация состояний.
-
У меня ещё один вопрос возникло не в теме.
Крч как работает метод CreateObject(IID: TGUID; out Obj).
Метод как возвращает объект в Obj. Он же Untyped. Я в своем проекте хочу пользоваться этим методом но не получается. Я новичок в использовании Интерфейсов.
-
var
ObjectList: IAIMPObjectList;
if Succeded(<Core>.CreateObject(IAIMPObjectList, ObjectList)) then
..