Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2010, 21:07   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Handle груженый из bmp =! 24 bit?

Код:
...
LoadHB(PChar(CurDir + '\Resource\Interface\Menu\Menu.bmp'), Warehouse.Menu);
  End;

 Procedure LoadHB(FileName : PChar; Var HB : HBitMap);
 Begin
  HB := LoadImage(GetModuleHandle(Nil), FileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
 End;
Код:
Procedure FVFL_Brightness(Handle: HBITMAP; Value : Integer); StdCall;
Var
 X, Y: Integer;
 BMP: BITMAP;
 P1, P2: PRGBTriple;
Begin
 Windows.GetObject(Handle, SizeOf(Bmp), @BMP);
 P1 := BMP.bmBits;
 If BMP.bmBitsPixel = 24 Then
      ...
 Else
  MessageBox(0, 'Library error - 0x00', 'Error', MB_OK);
End;
Все время выбивает ошибку 0x00. Menu.bmp = 24 bit.

Как исправить?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.06.2010, 10:38   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
BMP.bmBitsPixel
А чему она становится равной?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.06.2010, 11:36   #3
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

32...........................
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.06.2010, 12:16   #4
baster128
Форумчанин
 
Аватар для baster128
 
Регистрация: 24.04.2010
Сообщений: 205
По умолчанию

Дружище! Я тут как то написал процедуру основу взял здесь на этом форуме. Она грузит *.bmp файл и закрашивает им фон TWinControl
Код:
procedure BackGrPict(Obj:TWinControl;fBmp:string);
var H:HBITMAP;
    bm:BITMAP;M,DC:HDC;
    bW,bH,j,i:integer;
begin
H:=LoadImage(GetModuleHandle(nil),PChar(fBmp),IMAGE_BITMAP,0,0,LR_LOADFROMFILE);//грузим битмап
if H=0 then Exit  else
 begin
 DC:=GetDC(Obj.Handle);//берем контекст формы
 M:=CreateCompatibleDC(DC);//создаем временный контекст
 SelectObject(M,H);//применяем к нему наш битмап
 GetObject(H,sizeof(BITMAP),@bm);//берем данные битмапа
 bW:=1;bH:=1;
 for j:=0 to Round(Obj.ClientHeight/bm.bmHeight) do begin
 for i:=0 to Round(Obj.ClientWidth/bm.bmWidth) do begin
 BitBlt(DC,bW,bH,bm.bmWidth,bm.bmHeight,M,0,0,SRCCOPY);//рисуем итмап на контексте формы(используя ширину и высоту)
 bW:=bW+(bm.bmWidth);
  end;
  bH:=bH+(bm.bmHeight);bW:=1
  end;
 DeleteDC(M);//стираем временный контекст
 DeleteObject(H);
end;
end;
baster128 вне форума Ответить с цитированием
Старый 29.06.2010, 12:20   #5
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

И как это поможет применить эффекты моей библиотеки к данной ситуации?

2Stilet: Если я нарисую в dll точно такие же функи, только для 32-х битных имаг. Что придется менять?

Исходник здесь полный здесь.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.06.2010, 12:58   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А бог его знает. Пока я не вижу что там за функи твои как выглядят и что делают.
Кстати если не секрет что пишешь?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.06.2010, 13:02   #7
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Кстати если не секрет что пишешь?
Развлекаюсь с графикой.
Цитата:
Пока я не вижу что там за функи твои как выглядят и что делают.
Код:
Procedure FVFL_ConvertToBW(Handle: HBITMAP); StdCall;
Var
 X, Y: Integer;
 C: Byte;
 BMP: BITMAP;
 P1, P2: PRGBTriple;
Begin
 Windows.GetObject(Handle, SizeOf(Bmp), @BMP);
 P1 := BMP.bmBits;
 If BMP.bmBitsPixel = 24 Then
      For Y := 0 To BMP.bmHeight - 1 Do
            Begin
             P2 := P1;
             For X := 0 To BMP.bmWidth - 1 Do
                  Begin
                   C:=(P2.RGBTRed + P2.RGBTGreen + P2.RGBTBlue) Div 3;
                   P2.rgbtRed   := C;
                   P2.rgbtGreen := C;
                   P2.rgbtBlue  := C;
                   Inc(P2);
                  End;
             Pointer(P1) := Pointer(Integer(P1) + BMP.bmWidthBytes);
            End
 Else
  MessageBox(0, 'Library error - 0x00', 'Error', MB_OK);
End;
Вот например код перевода имаги в B/W. Что в нем надо поменять, чтобы работал для 32-х битных имаг?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 29.06.2010, 13:19   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну наверное просто вместо 24 поставить 32...
Кстати... Я где-то среди GDI+ видел функции конвертации...
Может тебе поюзать его возможности?

P.S. Пардон по-моему насчет 32 затупил...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.06.2010, 13:21   #9
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Был бы рад увидеть эти функции.

Сейчас попробую поменять 24 на 32 в dll.
Результат плачевный:
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 29.06.2010 в 13:25.
Alex Cones вне форума Ответить с цитированием
Старый 29.06.2010, 13:40   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Пжалста:http://www.programmersforum.ru/showthread.php?p=560217
См. Приаттаченый архив
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Импорт 32-bit dll в 64-bit valchakov Общие вопросы Delphi 8 25.12.2009 15:18
Как узнать handle окна имея handle обного из его компонентов SeRhy Win Api 2 18.10.2009 19:31
Vista Home Basic 64-bit NIKITUS Windows 4 31.03.2009 18:44
Как имея handle окна узнать handle edit-a который находится в етом окне SeRhy Общие вопросы Delphi 1 20.07.2008 13:48