Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.012 c
3-19483
Виталий Панасенко
2003-03-18 14:01
2003.04.07
FIBPlus&Exception


8-19711
deep-forest
2003-01-04 00:12
2003.04.07
Сравнение двух изображений


1-19572
$hade
2003-03-25 08:38
2003.04.07
Структурированые хранилища (doc-файлы)


14-19796
Дмитрий К.К.
2003-03-19 09:49
2003.04.07
MS Outlook Express 5.50


1-19546
spogi
2003-03-26 22:58
2003.04.07
vopros po TPanel on RUN-TIME




   Наверх