Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Вниз

Как сделать 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 вся ветка

Форум: "Media";
Текущий архив: 2003.10.20;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.008 c
14-65595
michael
2003-10-01 14:21
2003.10.20
Как читать книги по программированию?


3-65333
Difar
2003-09-30 08:06
2003.10.20
Восстановление таблицы Paradox


14-65591
Думкин
2003-10-02 06:33
2003.10.20
С днем рождения! 1 октября.


3-65328
evgen123
2003-09-30 10:05
2003.10.20
Идентификатор записи


3-65369
Difar
2003-09-29 08:19
2003.10.20
Привет мастера !!! Такая проблема: при сохранении таблицы.....





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский