Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Графика и игры
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.08.2025, 18:59
Elijah Elijah вне форума
Прохожий
 
Регистрация: 08.10.2024
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию FMX.Graphics и VCL.Graphics

Подскажите, плз, как нарисовать на FMX.Canvas рисунок VCL.Bitmap?
Есть событие:
Код:
GridDrawColumnCell(Sender: TObject; const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF; const Row: Integer; const Value: TValue; const State: TGridDrawStates);
с fmx.canvas, а вся прога написана на vcl, так что надо как-то отрисовать в ячейке vcl.bitmap, или хотя бы перекинуть его на fmx.bitmap.
Ответить с цитированием
  #2  
Старый 10.08.2025, 00:31
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Copilot дает вот такой ответ:
Код:
var
  VCLBitmap: Vcl.Graphics.TBitmap;
  DestRect: TRectF;
begin
  VCLBitmap := Vcl.Graphics.TBitmap.Create;
  try
    // Load or create your VCL Bitmap
    VCLBitmap.LoadFromFile('example.bmp');

    // Define the destination rectangle
    DestRect := RectF(10, 10, 200, 200);

    // Draw on FMX Canvas (e.g., inside a TPaintBox.OnPaint event)
    DrawVCLBitmapOnFMXCanvas(VCLBitmap, Canvas, DestRect);
  finally
    VCLBitmap.Free;
  end;
end;

Еще вот тут посмотреть можно: https://stackoverflow.com/questions/...napi-functions
Ответить с цитированием
  #3  
Старый 10.08.2025, 13:09
Elijah Elijah вне форума
Прохожий
 
Регистрация: 08.10.2024
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Что за функция DrawVCLBitmapOnFMXCanvas? Где она находится?
Ответить с цитированием
  #4  
Старый 10.08.2025, 18:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Elijah
Что за функция DrawVCLBitmapOnFMXCanvas? Где она находится?

Код:
procedure DrawVCLBitmapOnFMXCanvas(VCLBitmap: Vcl.Graphics.TBitmap; FMXCanvas: TCanvas; const DestRect: TRectF);
var
  FMXBitmap: FMX.Graphics.TBitmap;
  BitmapData: TBitmapData;
  x, y: Integer;
begin
  // Create an FMX Bitmap
  FMXBitmap := FMX.Graphics.TBitmap.Create(VCLBitmap.Width, VCLBitmap.Height);
  try
    // Lock the FMX Bitmap for writing
    if FMXBitmap.Map(TMapAccess.Write, BitmapData) then
    try
      // Copy pixel data from VCL Bitmap to FMX Bitmap
      for y := 0 to VCLBitmap.Height - 1 do
        for x := 0 to VCLBitmap.Width - 1 do
          BitmapData.SetPixel(x, y, VCLBitmap.Canvas.Pixels[x, y]);
    finally
      FMXBitmap.Unmap(BitmapData);
    end;

    // Draw the FMX Bitmap onto the FMX Canvas
    FMXCanvas.DrawBitmap(FMXBitmap, RectF(0, 0, FMXBitmap.Width, FMXBitmap.Height), DestRect, 1.0);
  finally
    FMXBitmap.Free;
  end;
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:06.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025