Як малювати на - чужих - контролах Графіка - Fire Monkey від А до Я
rareMax 342

rareMax 342
- Досвідчений користувач

- Користувачі
- 342
- 550 повідомлень
- Місто Мелітополь
Поділитись повідомленням
Посилання на повідомлення
Поділитись на інші сайти
3 відповіді на це питання
Рекомендовані повідомлення

Схожий контент
Вітаю! Є самописний компонент - індикатор завантаження написаний під VCL з використанням Direct2D. TD2DProgressBar = > Потім беру FInteropTarget.GetDC(D2D1_DC_INITIALIZE_MODE_COPY, FRenderDC); і виводжу на поверхню функцією
procedure TD2DProgressBar.UpdateWindow(sourceDC : HDC); var info : TUpdateLayeredWindowInfo; begin ZeroMemory(@info, sizeof(info)); with info do begin cbSize := sizeof(TUpdateLayeredWindowInfo); pptSrc := @FSourcePosition; pptDst := @FWindowPosition; psize := @FWndSize; pblend := @FBlend; dwFlags := ULW_ALPHA; end; info.hdcSrc := SourceDC; if not UpdateLayeredWindowIndirect(handle, @info) then begin RaiseLastOSError(); end end; Але це лише під VCL. Firemonkey не знайшов способу комбінувати градієнти та/або намалювати арку градієнтом (саму лінію арки а не залити сектор) або комбінацією градієнтів.
Як вивести цей FRenderTarget на канву Firemonkey-контролю? Найбільша проблема в тому, що компонент напівпрозорий, і варіант з переливом через Vcl.Graphics.TBitmap та MemoryStream не дає потрібного результату.
MS:=TMemoryStream.Create; Blend.BlendOp := AC_SRC_OVER; Blend.BlendFlags := 0; Blend.AlphaFormat := AC_SRC_NO_PREMULT_ALPHA; Blend.SourceConstantAlpha:= 255; // // Рівень прозоростіRes:=Winapi.Windows.AlphaBlend(VCLBitmap.Canvas.Handle, 0, 0, VCLBitmap.Width, VCLBitmap.Height, FRenderDC, 0, 0, VCLBitmap.Width, VCLBitmap.Height, Blend); VCLBitmap.SaveToStream(MS); FFMXBitmap.SetSize(TSize.Create(VCLBitmap.Width, VCLBitmap.Height)); FFMXBitmap.LoadFromStream(MS); FreeAndNil(MS); У Blend пробував різні комбінації BlendOp та AlphaFormat. Хелп плізз! У вкладенні компонент під VCL. (Може кому знадобиться))) D2DProgressbar.zip
Доброго дня, ідеологія така: створити бітмап, малювати на ньому, не роблячи його видимим. - нашліпати на канву панелі підготовлений бітмап.
Насправді не вдається намалювати лінію на бітмапі. Тобто після процедури Draw2 протискаю процедуру Draw – отримую на панелі червоний прямокутник бітмапа без намальованої лінії. Порадьте що-небудь, дякую!
//BITMAP Bm:= TBitmap.Create; bm.W >
Завантажую через opendialog картинку формату bmp в image Є змінні з:TColor, c1:Tcolor Необхідно спочатку дізнатися колір певного пікселя на завантаженому зображенні і записати в c1, а потім змінити колір певного пікселя на завантаженому зображенні на колір, зберігаючи у змінній с. Шукаю дуже давно, але виразного пояснення ніде не знайшла(


Доброго часу доби. Хочу знову підняти питання про відмальовування ліній на канві, що обговорювалося тут. З горизонтальними і вертикальними лініями проблем немає, при зміщенні на половину від товщини лінії все чудово виглядає. Однак при малюванні ліній під різними кутами такий фінт не проходить: зліва VCL праворуч FMX
Лінія так само розмазується, в результаті візуально потовщується і стає не такою чіткою. Як все ж таки добитися такого ж результату як на VCL? Цікавить лише Windows. const OFFSET_LINE = 0.5; . Image.Bitmap.Canvas.BeginScene; Image.Bitmap.Canvas.Stroke.Kind := TBrushKind.Sol >

Delphi Seattle, Android 5.0.1 Формую картинку через ScanLine. На виході отриманий бітмап малюється на полотні TImage, де перед цим був намальований Rect. GlobalBitmap - формований tbitmap. з ObjectPreviewImage.Bitmap.Canvas do begin BeginScene; Clear(TAlphaColorRec.White); DRect := TRectF.Create(0, 0, GlobalBitmap.W > Проблема власне в чому - в андроїдній версії зліва і внизу рамка "з'їдається". У Win32 версії все відмінно. На скріншотах це чітко видно. Документацію читал , гугл гуглил.
Що я роблю не так? Чи це невідоме підводне каміння андроїдного малювання на полотні?
P.S. Картинка однакова, колір до певної області застосовується не так. Походу також андроїдні приколи. Але з цим я вже розберуся. P.P.S. Вже розібрався з кольором - під андроїдом Blue та Red у пікселі треба поміняти місцями. А щодо канви – не виходить ніяк. P
Останні відвідувачі 0 користувачів онлайн
Жодного зареєстрованого користувача не переглядає цієї сторінки