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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2010, 18:43   #11
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Вообще я пишу редактор электронных схем и работаю с фреймами мне надо чтоб фрейм был как png на форме :||
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 11.07.2010, 19:20   #12
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Хм... Layered используется только для создания полупрозрачных окон... Вы уверены что это точно то что вам нужно?
Цитата:
работаю с фреймами мне надо чтоб фрейм был как png на форме
Почему именно фреймы? А TImage не подойдёт?
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 11.07.2010, 21:08   #13
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Цитата:
Почему именно фреймы? А TImage не подойдёт?
Понимаете если использовать Timage то он не копируеться а фреймы можно, притом на фрейме можно события прописать image(а).
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Старый 11.07.2010, 23:48   #14
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Как так не копируется? При желании можно...

Кстати если загружать в TImage картинки в формате Ico (32хбитный), то полупрозрачность будет сама собою...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 12.07.2010, 09:01   #15
dmitriegorovih
Ещё не
Форумчанин
 
Аватар для dmitriegorovih
 
Регистрация: 04.01.2010
Сообщений: 517
По умолчанию

Всем спасибо кто откликнулся.Помогли в Королевство Делфи
вот сам компонент - http://slil.ru/29453397
а вот сам код
Код:
uses
  ..., pngimage;

type
  pRGBQuadArray = ^TRGBQuadArray;
  TRGBQuadArray = array [WORD] of TRGBQuad;

...

procedure TForm1.FormCreate(Sender: TObject);
var
  DC: HDC;
  WS: Cardinal;
  R: TRect;
  i, j: integer;
  Row: pRGBQuadArray;
  PNGAlpha: pByteArray;
  Blend: TBlendFunction;
  BmpSize: TSize;
  TopLeft, BmpTopLeft: TPoint;
  FWorkPNG: TPNGObject;
  FWorkBMP: TBitmap;
begin
  Form1.BorderStyle:=bsNone;
  WS := GetWindowLong(Self.Handle, GWL_EXSTYLE);
  SetWindowLong(Self.Handle, GWL_EXSTYLE, WS or WS_EX_LAYERED);
  SetWindowLong(Self.Handle, GWL_EXSTYLE, WS_EX_LAYERED);

  GetWindowRect(Self.Handle, R);
  TopLeft.X := R.Left;
  TopLeft.Y := R.Top;

  BmpTopLeft := Point(0, 0);

  FWorkPNG := TPNGObject.Create;
  FWorkPNG.LoadFromFile('C:\...\Image.png'); \\Загрузка PNG картинки из файла

  BmpSize.cx := FWorkPNG.Width;
  BmpSize.cy := FWorkPNG.Height;

  FWorkBMP := TBitmap.Create;
  FWorkBMP.PixelFormat := pf32Bit;
  FWorkBMP.Width := BmpSize.cx;
  FWorkBMP.Height := BmpSize.cy;
  FWorkBMP.Canvas.Draw(0, 0, FWorkPNG);

  for i := 0 to FWorkBMP.Height - 1 do
  begin
    Row := FWorkBMP.Scanline[i];
    PNGAlpha := FWorkPNG.AlphaScanline[i];
    for j := 0 to FWorkBMP.Width - 1 do
    begin
      Row[j].rgbReserved := PNGAlpha[j];
      Row[j].rgbBlue := Round(Row[j].rgbBlue * Row[j].rgbReserved / 255);
      Row[j].rgbGreen := Round(Row[j].rgbGreen * Row[j].rgbReserved / 255);
      Row[j].rgbRed := Round(Row[j].rgbRed * Row[j].rgbReserved / 255);
    end;
  end;

  DC := GetDC(0);

  with Blend do
  begin
    BlendOp := AC_SRC_OVER;
    BlendFlags := 0;
    SourceConstantAlpha := 255;
    AlphaFormat := AC_SRC_ALPHA;
  end;
  
  UpdateLayeredWindow(Self.Handle, DC, @TopLeft, @BmpSize,
    FWorkBMP.Canvas.Handle, @BmpTopLeft, clNone, @Blend, ULW_ALPHA);

  ReleaseDC(0, DC);
  FWorkPNG.Free;
  FWorkBMP.Free;
end;
Воображение важнее, чем знания. (Albert Einstein)
dmitriegorovih вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма без крестика ruavia3 Microsoft Office Excel 18 30.11.2010 17:18
Макрос для рамок Foxx Microsoft Office Word 9 05.06.2010 21:57
Окно без рамок на Api hoza_syl Gamedev - cоздание игр: Unity, OpenGL, DirectX 3 21.06.2008 15:55
Форма без заголовка Михаил Юрьевич Общие вопросы Delphi 1 29.02.2008 21:40
Форма без заголовка кнопок SAndrus Microsoft Office Excel 6 18.08.2007 14:18