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

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

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 26.04.2008, 14:06   #1
SkAndrew
Форумчанин
 
Регистрация: 05.04.2008
Сообщений: 244
По умолчанию Как наложить иконку с исходным размером 16х16 на битмап с размером 32х32?

Добрый день!
Хочу наложить иконку с исходным размером 16х16 на битмап с размером 32х32 в списоке картинок ImageList1. Но не могу изменить размер иконки, потому что рисуется исонка с размерами 32х32, а мне нужно 16х16. ico.SetSize(16, 13) - не помогает. Размер иконки 32х32, хотя исходный 16х16. Пример ниде:
procedure TForm1.FormCreate(Sender: TObject);
var bmp : TBitmap;
ico : TIcon;
Filename : String;
begin
Filename := 'C:\путь к иконке\icon_16x16.ico';
bmp := TBitmap.Create;
bmp.PixelFormat := pf24bit;
ico := TIcon.Create;
ico.SetSize(16, 16);
ico.LoadFromFile(Filename);
try
ImageList1.GetBitmap(1, bmp);
bmp.Canvas.Draw(bmp.Width - ico.Width, bmp.Height - ico.Height, ico);
ImageList1.Replace(1, bmp, bmp);
finally
ico.Free;
bmp.Free;
end;
end;
Иконка должна рисоваться в нижнеправом углу битмапа, а рисуется сейчас в левом верхнем.
Подскажите что здесь не так?
Всем спасибо!
SkAndrew вне форума Ответить с цитированием
Старый 26.04.2008, 14:44   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,689
По умолчанию

Код:
var Icon:HIcon;
...
DrawIcon(bmp0.Canvas.Handle, 0, 0, Icon);
// сжимаем вот так
Код:
bmp0.Canvas.StretchDraw(classes.rect(0,0,16,16),bmp0);
// но можно сразу, т.к. иконка уже 16х16
Код:
bmp.Canvas.CopyRect(classes.rect(17, 17, 32, 32), bmp0.canvas, classes.rect(0, 0, 16, 16));
17, 17, 32, 32 - координаты прямоугольника на Объекте куда рисовать.
0, 0, 16, 16 - координаты прямоугольника на bmp откуда брать.
В принципе можно обойтись даже без StretchDraw если загружать 16х16

Последний раз редактировалось eoln; 26.04.2008 в 15:01.
eoln вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плеер размером в 3Кб (1654 байт пожатый) JTG Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 28 20.10.2012 11:07
Извлечь иконку из EXE? Алексей_C Общие вопросы Delphi 22 27.12.2008 23:34
Проблема с размером :) Exel_Wild Microsoft Office Excel 5 14.04.2008 12:47
Как нарисовать на КАНВАС-е БИТМАП. Altera Общие вопросы Delphi 3 09.03.2008 15:41