HDC & colors
От: Jura Украина  
Дата: 17.04.02 13:38
Оценка:
Dobrogo vremeni sutok!

Podskajite kak sozdat' DC (v nem budu risovat') 4toby u nego bylo zadannoe 4islo BITSPIXEL.

P.S.
Mne kajetsia 4to ia ne sovsem korrektno stavlju vopros.. poetomu opishu problemu:
ia sozdaju
HDC hdc = ::CreateCompatibleDC(NULL) — t.e. sovmestimo s tekushim screen-om

dalee
HBITMAP hBmp=CreateCompatibleBitmap(hdc,width,height)

dalee ia sohranaju hBMP v fail — bmp, jpeg, gif...

tak vot... kogda ia umen'shaju 4islo cvetov hBMP do neobhodimogo (dopustim 256) —
.. eto zanimaet o4en' mnogo vremeni ... —

esli screen k primeru byl v 256 color — to poniatno ni4ego uje umen'shat' ne pridetsia i vse proizojdet bystro.

Poetomu ia i ho4u sozdat' DC (ili BITMAP?) s zaranee zadannym BPP i v nem risovat'.
JK
Re: HDC & colors
От: Lexey Россия  
Дата: 17.04.02 14:26
Оценка:
Здравствуйте Jura, Вы писали:

J>Podskajite kak sozdat' DC (v nem budu risovat') 4toby u nego bylo zadannoe 4islo BITSPIXEL.


Создавай DC через CreateDC("DYSPLAY",NULL,NULL,&devmode), а в devmode задавай нужные параметры DC.
Re: HDC & colors
От: KA it-knowledge-base.blogspot.com
Дата: 17.04.02 14:37
Оценка:
Здравствуйте Jura, Вы писали:

J>Poetomu ia i ho4u sozdat' DC (ili BITMAP?) s zaranee zadannym BPP i v nem risovat'.


Задать количество битов на цвет при создании битмапа можно с помощью функции CreateBitmap
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
Re[2]: HDC & colors
От: Аноним  
Дата: 18.04.02 06:09
Оценка:
Здравствуйте Lexey, Вы писали:

L>Здравствуйте Jura, Вы писали:


J>>Podskajite kak sozdat' DC (v nem budu risovat') 4toby u nego bylo zadannoe 4islo BITSPIXEL.


L>Создавай DC через CreateDC("DYSPLAY",NULL,NULL,&devmode), а в devmode задавай нужные параметры DC.


Spasibo — vidimo eto to 4to nujno, no i zdes' u menia problema — kak pravil'no zapolnit' strukturu DEVMODE? — ia nigde ne nashel primera. — dumal bylo u tekushego (sovmestimogo so screen-om) DC
vziat' nastrojki i podpravit' na nujnye vsego-to odin ili 2 parametra — da okazalos' 4to etu strukturku
pomoemu voobshe nel'zia polu4it' . Est' tolko GetDeviceCaps — no ona ne daet srazu vsju strukturu —
i mne ne o4evidno — kakie parametry sootvetstvujut poliam v strukture.
Podskajite kak lu4she dejstvovat' ? (ili primer pokajite :) )
Re[3]: HDC & colors
От: Lexey Россия  
Дата: 18.04.02 07:06
Оценка:
Здравствуйте Аноним, Вы писали:

J>>>Podskajite kak sozdat' DC (v nem budu risovat') 4toby u nego bylo zadannoe 4islo BITSPIXEL.


L>>Создавай DC через CreateDC("DYSPLAY",NULL,NULL,&devmode), а в devmode задавай нужные параметры DC.


А>Spasibo — vidimo eto to 4to nujno, no i zdes' u menia problema — kak pravil'no zapolnit' strukturu DEVMODE? — ia nigde ne nashel primera. — dumal bylo u tekushego (sovmestimogo so screen-om) DC

А>vziat' nastrojki i podpravit' na nujnye vsego-to odin ili 2 parametra — da okazalos' 4to etu strukturku
А>pomoemu voobshe nel'zia polu4it' . Est' tolko GetDeviceCaps — no ona ne daet srazu vsju strukturu —
А>i mne ne o4evidno — kakie parametry sootvetstvujut poliam v strukture.
А>Podskajite kak lu4she dejstvovat' ? (ili primer pokajite )

А блин, это я ерунду ранее написал. DEVMODE можно использовать только для принтеров.
Правильный совет уже дал KA — нужно создавать битмап с нужным количеством цветов через CreateBitmap.
Re[2]: HDC & colors
От: Аноним  
Дата: 19.04.02 13:00
Оценка:
Здравствуйте KA, Вы писали:

KA>Здравствуйте Jura, Вы писали:


J>>Poetomu ia i ho4u sozdat' DC (ili BITMAP?) s zaranee zadannym BPP i v nem risovat'.


KA>Задать количество битов на цвет при создании битмапа можно с помощью функции CreateBitmap ;)


Poproboval —

HDC hdc = ::CreateCompatibleDC(NULL);
int planes = ::GetDeviceCaps(hdc,PLANES); //po4emuto == 1 vsegda....
HBITMAP hBmp = ::CreateBitmap(m_width,m_height,planes,8,NULL);

4to-to ne pashet.

Dlai eksperimenta poproboval :
v rejime monitora 24bpp — ... imagi stali risovatsia 4ernye kak negry no4'ju ;)
v rejime monitora 8bpp — ... da rabotaet. — no ono i do etogo zdes' rabotalo

... vopros ostaetsi otkrytym...


JK
Re[3]: HDC & colors
От: KA it-knowledge-base.blogspot.com
Дата: 19.04.02 14:03
Оценка:
Здравствуйте Аноним, Вы писали:

А>... vopros ostaetsi otkrytym...


Поиском пользоваться надо
Конвертирование...
Автор: Alexander
Дата: 04.03.02

Bitmaps
Автор: Bailif
Дата: 25.09.01

Непосрадственный доступ к картинке
Автор: Faust
Дата: 30.01.02
//
#import <windows.bas>
class IWindows9x:protected DOS { private: virtual HANDLE EnumClouds()=0; };
Re[4]: HDC & colors
От: Аноним  
Дата: 19.04.02 15:47
Оценка:
Здравствуйте KA, Вы писали:

KA>Здравствуйте Аноним, Вы писали:


А>>... vopros ostaetsi otkrytym...


KA>Поиском пользоваться надо ;)

KA>Конвертирование...
Автор: Alexander
Дата: 04.03.02

KA>Bitmaps
Автор: Bailif
Дата: 25.09.01

KA>Непосрадственный доступ к картинке
Автор: Faust
Дата: 30.01.02


:)) Da!!! Eto ono!!! Pomoglo — gif-y generirrujutsia bystree ... mojno daje skazat' sushestvenno.
Blagodarju. //i avtorov teh otvetov toje.

memset(&bmiHeader, 0, sizeof(bmiHeader));
bmiHeader.biSize = sizeof(bmiHeader);
bmiHeader.biWidth = m_width;
bmiHeader.biHeight = m_height;
bmiHeader.biPlanes = 1;
bmiHeader.biBitCount = 8;
bmiHeader.biCompression = BI_RGB;

HBITMAP hBitmap = CreateDIBSection(dc, (BITMAPINFO *)&bmiHeader,DIB_RGB_COLORS, NULL, NULL, 0);


No voznikla problemka — u vseh generiruemyh failov — teper' — nepravil'nye cveta ....
migko govoria — a to4nee sovsem ne te :)

kak ia ponimaju — vse funkcii 4ertiat na hdc ... a v nej bitmap s drugim cvetovym rejimom (4to li)
4em hdc... mojet sdes' sobaka porylas' ?

Mojet byt' est' idei — po etomu povodu — ?
— 4to mojet byt' ne tak pri izmenenii koli4estva cvetov na BIMAPE ???

Jura
Re[5]: HDC & colors
От: Alex Fedotov США  
Дата: 19.04.02 16:03
Оценка:
Здравствуйте Аноним, Вы писали:

А>
А>memset(&bmiHeader, 0, sizeof(bmiHeader));
А>bmiHeader.biSize = sizeof(bmiHeader);
А>bmiHeader.biWidth = m_width;
А>bmiHeader.biHeight = m_height;
А>bmiHeader.biPlanes = 1;
А>bmiHeader.biBitCount = 8;
А>bmiHeader.biCompression = BI_RGB;

А>HBITMAP hBitmap = CreateDIBSection(dc, (BITMAPINFO *)&bmiHeader,DIB_RGB_COLORS, NULL, NULL, 0);
А>


А>No voznikla problemka — u vseh generiruemyh failov — teper' — nepravil'nye cveta ....

А>migko govoria — a to4nee sovsem ne te

При рисовании на 8-bpp поверхности, в DC надо выбирать подходящую палитру. Смотри CreatePalette, SelectPalette.
-- Alex Fedotov
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.