Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Скопировать в буфер обмена 32bit Bitmap [D6, D7, Win95/98, WinME, Win2k, WinXP]


Billi332 ©   (2005-07-29 12:25:00) 

Как можно скопировать в буфер обмена 32bit Bitmap ARGB, так что бы сохранился прозрвчный цвет?
Я делаю так но это не помогает  
B := TBitMap.Create;
B.PixelFormat := pf32bit;
B.Transparent := true;
B.TransparentColor := 0;

.................
B.SaveToClipboardFormat(MyFormat, AData, APalette);
С := TClipboard.Create;
C.SetAsHandle(MyFormat, AData);
C.Free;


Valera   (2005-08-15 00:59:00) [1]

Для Graphics32 Пример
Copies/Pastes the Bitmap32 and its alpha channel to/from the clipboard
http://www.graphics32.org/downloads/3rdparty/EG_ClipboardBitmap32.pas


Sphinx   (2005-08-07 14:13:00) [2]

Кажется прозрачный цвет таким способом не сохранить (я про PrintScreen) да и как выбрать какие пиксели должны быть прозрачными, а какие - нет ? На экране нет такой информации !
А так, у TBitmap есть канва...у канвы есть свойство Pixels которое отвечает за цвет пикселя и равно Longword, для PixelFormat := pf32bit это будет ARGB цвет, на каждую составляющую по Byte. Соответсвенно первый байт - это и будет значение альфы.

TransparentColor - это НЕ альфа канал !!!


Бугай   (2005-08-07 00:55:00) [3]

АлексБонд, не знаешь, как помочь - не пиши вообще. От твоего неуместного кода и беспочвенных утверждений о ненужности альфа-канала пользы абсолютно никакой.


AlexBond   (2005-08-04 22:07:00) [4]

Привожу код для сохранения картинки после нажатия на PrintScreen, удобно и быстро, гланвое нет никаких форм:


unit screen02;

interface

uses
 Windows, Graphics,clipbrd;

 private
   { Private declarations }
 public
   { Public declarations }
   z:integer;
 end;

implementation
var Bmp: TBitmap;

procedure TForm1.FormCreate(Sender: TObject);
begin
Bmp:= TBitmap.Create;
z:=0;
Application.ShowMainForm:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if  IsClipboardFormatAvailable(cf_Bitmap)then
        begin
        bmp.LoadFromClipBoardFormat(cf_BitMap, ClipBoard.                 GetAsHandle(cf_Bitmap),0);
        bmp.SaveToFile('c:\screen\screen0'+inttostr(z)+'.bmp');
        z:=z+1;
        ClipBoard.AsText:='0';
        bmp.FreeImage;
        end;
end;

end.

Данный код сохраняет скриншоты в формате экрана, при каждом нажатии на PrintScreen.

Не знаю почему у тебя не получается 32bit Bitmap, скорее всего у тебя не включен 32-bit режим или у тебя плохие просмоторщики картинок некоторые автоматически конвертируют в 24-bit.
Кстати зачем тебе это надо, прозрачный цвет почти нигде не используется, кроме как в 3d-текстурах.


Наверх

Титульная страница Поиск, карта сайта Написать письмо