Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.04.07;
Скачать: CL | DM;

Вниз

Как получить произвольный кусок из битмапа..   Найти похожие ветки 

 
Zaxar   (2003-03-26 11:47) [0]

Приветствую!

Например, есть битмап 1200x900, а мне необходимо получить его кусок, например, начиная с координат x1=10;y1=10 и до координат x2=30;y2=30.. Пробовал начальный сдвиг левой верхней точки реализовать через BitBlt - но в результирующем битмапе появляются белые полосы шириной и высотой как раз по x= и y=..

Помогите, пожалуйста!


 
vlad40 ©   (2003-03-26 12:24) [1]

Попробуй такой вариант:


function CopyBitMapRect(BitMapSource: TBitmap; RectSource: TRect): TBitmap;
begin
Result:=TBitmap.Create;
Result.Width:=RectSource.Right-RectSource.Left;
Result.Height:=RectSource.Bottom-RectSource.Top;
Result.Canvas.CopyRect(Rect(0,0,Result.Width,Result.Height),BitMapSource.Canvas,RectSource);
end;


 
Axis_of_Evil ©   (2003-03-26 12:40) [2]

Товарищч, BitBlt работает нормально, приведите код.


 
Zaxar   (2003-03-26 12:53) [3]

Пожалуйста - вот Вам код. Для пояснения - над битмапом располагается полупрозрачный Gif (показывая какой кусок будет отрезан)


cutbmp:=Tbitmap.Create;
cutbmp.Width:=form1.Gif.Width;
cutbmp.Height:=form1.Gif.Height;
cutbmp.PixelFormat:=form1.Image1.Picture.Bitmap.PixelFormat;
BitBlt
(cutbmp.Canvas.Handle,
0,
0,
form1.Gif.Width,
form1.Gif.Height,
form1.Image1.Picture.Bitmap.Canvas.Handle,
form1.Gif.Left,
form1.Gif.Top,
SRCCopy);
cutbmp.SaveToFile("c:\test.bmp");
cutbmp.Free;



Страницы: 1 вся ветка

Текущий архив: 2003.04.07;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
6-19731
Stan
2003-02-08 13:19
2003.04.07
Соединение по номеру телефона


1-19633
Genemy
2003-03-25 09:47
2003.04.07
StringGrid


7-19910
Dark WandeR
2003-02-11 23:37
2003.04.07
Проблема с памятью


4-19921
Павел
2003-02-04 09:15
2003.04.07
Запрет на сворачивание


14-19791
NetBreaker666
2003-03-17 23:53
2003.04.07
Почему не работает ???