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

Вниз

Как сделать flip для Tbitmap   Найти похожие ветки 

 
Oxy ©   (2003-06-20 13:14) [0]

Такая трабла. Есть TBitmap и мне надо сделать вертикальный или горизонтальный флип. Когда точно известно PixelFormat (например PixelFormat=pf24bit), то все без проблем. Я делаю прямой доступ к данным битмапы через scanline и копирую куда мне надо. Но я не знаю как быть когда PixelFormat=pfDevice. Тогда мне не известен размер элемента изображения (pixel) в байтах и не могу копировать.
Можно конечно через TBitmap.Canvas.Pixels, но там скорость вообще никакая. Но как то же эта ф-ция Pixels определяет откуда брать данные. Может есть какой то более быстрый способ доступа к битмапе или какой то способ определения формата пикселя?


 
icWasya ©   (2003-06-20 13:57) [1]

ну дык явно установи, например

Image1.Picture.Bitmap.PixelFormat:=pf32bit;

и вперёд ...


 
Oxy ©   (2003-06-20 14:04) [2]

Ты не понимаешь. Я использую TBitmap в компоненте. Я рисую на него, а потом копирую на канву компонента. Так же мне нужен flip этой битмапы в другом TBitmap и его я тоже копирую на канву компонента. И если я явно задам pf24bit, то в системе с 256 цветами получится что то ужасно уродливое.


 
MBo ©   (2003-06-20 14:11) [3]

перевернуть картинку - StretchBlt с отрицательной высотой или шириной приемника (или TCanvas.StretchDraw)

А про шустрый доступ (но не c pfDevice) - в Статьи загляни


 
Oxy ©   (2003-06-20 14:28) [4]

перевернуть картинку - StretchBlt с отрицательной высотой или шириной приемника (или TCanvas.StretchDraw)

А сделать flip справа на лево так можна?

А про шустрый доступ (но не c pfDevice) - в Статьи загляни

Это я и сам знаю. Мне бы именно с pfDevice


 
cult ©   (2003-06-20 14:32) [5]

Если Win98 не принципиально - то можно пользоваться SetWorldTransform


 
MBo ©   (2003-06-20 14:43) [6]

>А сделать flip справа на лево так можна?
ты внимательно прочитал ответ и хелп?

>именно с pfDevice
Get/SetBitmapBits



 
Oxy ©   (2003-06-20 15:10) [7]

Ладно, попробовал я так.

StretchBlt(bmp2.Canvas.handle,
0,0,
bmp2.width, bmp2.height,
bmp1.Canvas.Handle,
0,0,
-bmp1.width, -bmp1.height,
SRCCOPY);


А в хелпе написано

StretchBlt creates a mirror image of a bitmap if the signs of the nWidthSrc and nWidthDest parameters or of the nHeightSrc and nHeightDest parameters differ. If nWidthSrc and nWidthDest have different signs, the function creates a mirror image of the bitmap along the x-axis. If nHeightSrc and nHeightDest have different signs, the function creates a mirror image of the bitmap along the y-axis.

И... ничего не работает. Может кинешь примерчик 100% рабочего кода?


 
MBo ©   (2003-06-20 15:19) [8]

оно работает, только в невидимую область выводит ;))
смести нач. точку


 
icWasya ©   (2003-06-20 15:19) [9]

не так

StretchBlt(bmp2.Canvas.handle,
0,0,
bmp2.width, bmp2.height,
bmp1.Canvas.Handle,
0,0,
-bmp1.width, -bmp1.height,
( bmp2.Canvas.handle,
0,0,
bmp2.width, bmp2.height,
bmp1.Canvas.Handle,
bmp1.width, bmp1.height,
0,0,
SRCCOPY
)
не так

StretchBlt(bmp2.Canvas.handle,
0,0,
bmp2.width, bmp2.height,
bmp1.Canvas.Handle,
0,0,
-bmp1.width, -bmp1.height,
SRCCOPY);


а так

StretchBlt(bmp2.Canvas.handle,
0,0,
bmp2.width, bmp2.height,
bmp1.Canvas.Handle,
bmp1.width, bmp1.height,
0,0,
SRCCOPY);





 
Oxy ©   (2003-06-20 15:25) [10]

2 icWasya ©
Не работает оно и так. :-(

2 MBo ©
Дык как сместить?
Ну на моем примере можешь показать?


 
MBo ©   (2003-06-20 15:56) [11]

StretchBlt(bmp2.Canvas.handle,
bmp2.width-1, bmp2.height-1,
-bmp2.width, -bmp2.height,
bmp1.Canvas.Handle,
0,0,
bmp1.width, bmp1.height,
SRCCOPY);


 
Oxy ©   (2003-06-20 16:33) [12]

Ок, я уже тоже сделал. Но все равно спасибо.



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

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

Наверх




Память: 0.49 MB
Время: 0.018 c
3-65337
Andy
2003-09-30 08:01
2003.10.20
Как написать запрос


1-65439
Xaksorz
2003-10-07 17:09
2003.10.20
Звук


3-65373
Nikitos
2003-09-29 09:22
2003.10.20
Научите уму-разуму. Есть 2 связанных..


1-65447
MadGhost
2003-10-07 14:03
2003.10.20
Помогите с TTreeView


1-65505
Ольга
2003-10-08 08:32
2003.10.20
Господа, подскажите, как решить проблему кодировок в D7?