Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.06.2016, 20:28   #1
ProQsy
Пользователь
 
Регистрация: 06.05.2016
Сообщений: 25
По умолчанию Rad studio delphi (FMX)

Только начал осваивать и столкнулся с проблемой.
Пытался написать так:
...
uses
FMX.Object,FMX.StdCtrls... и многое другое;
...
var karta,ug: tbitmap;
...
ug:=TBitmap.Create;
ug.LoadFromFile('5.bmp');
ug.Assign( ug);
ug.Transparent:=True;<-так нельзя(
...
karta.Canvas.Draw(pnl2.left,pnl2.to p,ug);<- так тоже((
...
PaintBox1.Canvas.Draw(karta.Height, 0,karta);<- так тожe((

Единственное что понял это то что Left и Top заменяется на Position.x или y
ProQsy вне форума Ответить с цитированием
Старый 29.06.2016, 20:45   #2
come-on
Участник клуба
 
Регистрация: 21.10.2015
Сообщений: 1,361
По умолчанию

Цитата:
ug.Assign( ug);
это так задумано?
come-on вне форума Ответить с цитированием
Старый 29.06.2016, 23:37   #3
ProQsy
Пользователь
 
Регистрация: 06.05.2016
Сообщений: 25
По умолчанию

Цитата:
Сообщение от come-on Посмотреть сообщение
это так задумано?
Это не важно, как использовать draw? и transparent
ProQsy вне форума Ответить с цитированием
Старый 30.06.2016, 02:36   #4
DIONISKA
Форумчанин
 
Регистрация: 07.11.2011
Сообщений: 161
По умолчанию

Цитата:
Сообщение от ProQsy Посмотреть сообщение
Это не важно, как использовать draw? и transparent
draw использовать так:
Код:
  Self.Canvas.BeginScene();
  Canvas.DrawBitmap(bitmap,rect1,rect2,1,true);
//рисуем что надо
  Self.Canvas.EndScene;
где rect1, rect2:trectf - прямоугольник изображения и назначения, 1- прозрачность.

Насчёт прозрачности: как в delphi сделать не выйдет, но можно перебрать изображение и назначить прозрачный цвет. Для прямого доступа к пикселям в fmx используется структура TBitmapData. Например это можно реализовать так:
Код:
procedure makemegood;

type
   TAlphar=array [Word] of TAlphaColor;
   PAlphar=^TAlphar;
var
    rect1,rect2 :TRectF;
    bdata       :TBitmapData;
    y,x         :Integer;
    tr          :TAlphaColor;
    arr         :PAlphar;
    bmp         :TBitmap;
begin
  bmp:=TBitmap.Create;
  bmp.LoadFromFile('test.bmp');
  rect1:=TRectF.Create(0,0,bmp.Width,bmp.Height);
  rect2:=TRectF.Create(0,0,Self.Width,self.Height);
  bdata:=TBitmapData.Create(bmp.Width,bmp.Height,bmp.PixelFormat);
  try  bmp.Map(TMapAccess.ReadWrite,bdata);
  tr:=bdata.GetPixel(0,0); // за "прозрачный" цвет берём левый верхний пиксель
    for y:= 0 to bdata.Height-1 do
     begin
     arr:=bdata.GetScanline(y); // действуем по аналогии со scanline обычного tbitmap
      for x := 0 to bdata.Width-1 do
        begin
         if arr[x]=tr then arr[x]:=$00ffffff;  // сравниваем цвет или диапазон на усмотрение
        end;
     end;
  finally
     bmp.Unmap(bdata);
  end;
  Self.Canvas.BeginScene();
  Self.Canvas.DrawBitmap(bmp,rect1,rect2,1,false);
  Self.Canvas.EndScene;
  bmp.SaveToFile('out.bmp'); // на выходе 32-bit изображение с альфаканалом
  bmp.free;
end;

Последний раз редактировалось DIONISKA; 30.06.2016 в 03:54.
DIONISKA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Rad Studio XE5 (Delphi for Android) ZuBy Обсуждение статей 51 25.09.2013 20:50
Rad Studio & Delphi Dozent Общие вопросы Delphi 3 18.12.2012 08:55
Delphi 7 и Embarcadero RAD Studio 2010 tarakan1983 Общие вопросы Delphi 4 13.12.2010 20:23
Rad Studio 2011 XE: новое в Delphi, C++ Builder, RadPHP и Delphi Prism savva-paladin Софт 18 02.10.2010 20:24
Delphi, Rad Studio 2009 mutabor Софт 5 24.05.2009 14:34