forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_menu32 - Графическое меню без головной боли (http://forum.boolean.name/showthread.php?t=6230)

odd 10.03.2009 21:18

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Конечно не показывает. Ты же сначала сохраняешь курсор, а потом делаешь menu32.init, который все переменные стирает и ставит дефолтные(по умолчанию) значения. Просто переставь оператор menu32.createcursor(200, 20, 255255000); так, чтоб он был после menu32.init.

Doctor Drive 16.03.2009 21:54

Ответ: Lib_menu32 - Графическое меню без головной боли
 
а как цвет курсора ставится? думал RRRGGGBBB где R,G,B - (0..255)
Но оказывается не так...

GRAY_WOLF 16.03.2009 22:14

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100839)
а как цвет курсора ставится? думал RRRGGGBBB где R,G,B - (0..255)
Но оказывается не так...


image CreateCursor(w: integer; h: integer; c: integer) - Создать прямоугольник с размерами w на h и ARGB цветом с.
вот пример LoadCursor(CreateCursor(120, 16, 4281428406));

Doctor Drive 16.03.2009 23:20

Ответ: Lib_menu32 - Графическое меню без головной боли
 
ага, но что за ARGB? в гугле ниче не нашел...


а терь проблема - после нажатия на "огонь" меню не появляеццо...


PHP код:

unit Edit;

interface
    
procedure open;

implementation
    
    uses FileSystem
imloadjsr75font32menu32effectscanvasjpeg;
        
    
procedure open;
    
        var 
openstring;
        
imimage;
        
coefwreal;
        
twthselkeyinteger;
        
resizeboolean;
        
    
begin
    font32
.init(2);
    
font32.Font(0); font32.LoadFont('Verdana_7'); 
    
font32.Font(1); font32.LoadFont('Verdana_7b');
    
    
th := font32.TextHeight;
    
tw := font32.TextWidth('5 - menu')/2;
        
        
open := FileSystem.foldselect;
        
im := imloadjsr75.loadimage(open);
        if 
getImageWidth(im) <= getwidth then resize := false else resize := true;
        
coefw := getImageWidth(im)/GetImageHeight(im);
        
showcanvas;
        
            
repeat
            
if resize false then drawimage(im,0,0);
            if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
            
setcolor(0,0,0);
            
fillrect(0getheight-thgetwidthth);
            
font32.Font(1);
            
DrawString('5 - Menu'getheight-thgetwidth/2-tw); //и вот тут рисует текст не тем шрифтом что надо
            
repaint;
            
repeat key := GetKeyClicked until KeyToAction(key) = GA_FIRE;
            
                    if 
resize false then drawimage(im,0,0);
                    if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                    
menu32.init;
                    
menu32.CreateCursor(130244278190250);
                    
menu32.SetMenuWindow(00getwidthgetheight);
                    
menu32.MenuFonts(01);
                    
menu32.additem(loadimage('/menu/saveas.png'), 'Save as...');
                    
menu32.additem(loadimage('/menu/effects.png'), 'Effects');
                    
menu32.additem(loadimage('/menu/back.png'), 'Close');
                    
drawmenurepaint;

                    
repeat
                    key
:=KeyToAction(GetKeyClicked);
                    if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                    if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                    
until (key=GA_FIRE); delay(100); 


Piligrim 16.03.2009 23:39

Ответ: Lib_menu32 - Графическое меню без головной боли
 
createCursor уже возвращает image, нет необходимости в loadimage.
ARGB - A - это прозрачность курсора.

Doctor Drive 17.03.2009 00:19

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от pilgrim (Сообщение 100854)
createCursor уже возвращает image, нет необходимости в loadimage.

А я и не делал loadimage для курсора.
-------------------------------------
А что на щет того что меню не показывается?!

GRAY_WOLF 17.03.2009 00:43

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100864)
А я и не делал loadimage для курсора.
-------------------------------------
А что на щет того что меню не показывается?!

procedure MainMenu; // Главное меню
begin
menu32.init; Cls;
AddItem(LoadImage('/book.png'), 'text'); AddItem(LoadImage('/REV.png'), 'text1');
AddItem(LoadImage('/Boot.png'), ''text2); AddItem(LoadImage('/exit.png'), 'Выход');
SetMenuWindow(10, 10, wi - 10, hi / 2);
LoadCursor(CreateCursor(150, 33, 4281428406)); MenuFonts(0, 1);
DrawMenu; Repaint;
repeat
key:=KeyToAction(GetKeyPressed); Delay(30);
if key = GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(250); end;
if key = GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(250); end;
if key = GA_FIRE then
begin
if Selected = 0 then //действия
if Selected = 1 then //действия 1
if Selected = 2 then //действия2
if Selected = 3 then Halt; // Выход
end;
until false;
end;

вот так уменя работает

Doctor Drive 17.03.2009 01:04

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Я знаю как меню делается. И делал. А вотут в проге оно не появляется

GRAY_WOLF 17.03.2009 18:39

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Цитата:

Сообщение от Doctor Drive (Сообщение 100868)
Я знаю как меню делается. И делал. А вотут в проге оно не появляется

Выложи исходник. Возможно кто нибудь и поможет.

Doctor Drive 17.03.2009 20:36

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нету смысла выкладывать целый исходник. Вот разве что целый юнит выложу (напишу сюда). Место проблемы возле коментариев (тоесть часть кода, где должно появится меню и то, где текст не там рисует) Вот:
PHP код:

unit Edit;

interface
    
procedure open;

implementation
    
    uses FileSystem
imloadjsr75font32menu32effectscanvasjpeg;
        
    
procedure open;
    
        var 
openstring;
        
imimage;
        
coefwreal;
        
twthselkeyinteger;
        
resizeboolean;
        
    
begin
    font32
.init(2);
    
font32.Font(0); font32.LoadFont('Verdana_7'); 
    
font32.Font(1); font32.LoadFont('Verdana_7b');
    
    
//ВОТ КООРДИНАТЫ ТЕКСТА
    
th := font32.TextHeight;
    
tw := font32.TextWidth('5 - menu')/2;
        
        
open := FileSystem.foldselect;
        
im := imloadjsr75.loadimage(open);
        if 
getImageWidth(im) <= getwidth then resize := false else resize := true;
        
coefw := getImageWidth(im)/GetImageHeight(im);
        
showcanvas;
        
            
repeat
            
if resize false then drawimage(im,0,0);
            if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
            
setcolor(0,0,0);
            
fillrect(0getheight-thgetwidthth);
            
font32.Font(1);
            
//ВОТ ТУТ ТЕКСТ НЕ ТАМ РИСУЕТ:
            
DrawString('5 - Menu'getheight-thgetwidth/2-tw);
            
repaint;
            
repeat key := GetKeyClicked until KeyToAction(key) = GA_FIRE;
            
            
//А ВОТ ЭТО МЕНЮ НЕ ПОКАЗЫВАЕТСЯ:
                    
if resize false then drawimage(im,0,0);
                    if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                    
menu32.init;
                    
menu32.CreateCursor(130244278190250);
                    
menu32.SetMenuWindow(00getwidthgetheight);
                    
menu32.MenuFonts(01);
                    
menu32.additem(loadimage('/menu/saveas.png'), 'Save as...');
                    
menu32.additem(loadimage('/menu/effects.png'), 'Effects');
                    
menu32.additem(loadimage('/menu/back.png'), 'Close');
                    
drawmenurepaint;
            
                    
repeat
                    key
:=KeyToAction(GetKeyClicked);
                    if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                    if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                    
until (key=GA_FIRE); delay(100);
                    
                    
sel := menu32.selected;
                    
                        if 
sel 0 then begin
                            jpeg
.saveImage(im100copy(open,0,length(open)-4) + '_edit.jpg');
                            
clearform;
                            
showAlert('Done!''Image saved!'loadimage('/sav.gif'), ALERT_INFO);
                            
delay(3000);
                        
end;
                        if 
sel 1 then begin
                                
if resize false then drawimage(im,0,0);
                                if 
resize true then drawimage(canvas.resize_image(imgetwidthtrunc(getwidth/coefw)),0,0);
                                
menu32.init;
                                
menu32.CreateCursor(130244278190250);
                                
menu32.SetMenuWindow(00getwidthgetheight);
                                
menu32.MenuFonts(01);
                                
menu32.additem(LoadImage('/menu/0.png'), 'Обесцвечивание');
                                
menu32.additem(LoadImage('/menu/1.png'), 'Негатив');
                                
menu32.additem(LoadImage('/menu/2.png'), 'Затемнение');
                                
menu32.additem(LoadImage('/menu/3.png'), 'Осветление');
                                
menu32.additem(LoadImage('/menu/4.png'), 'Сепия');
                                
menu32.additem(LoadImage('/menu/5.png'), 'Сглаживание');
                                
menu32.additem(LoadImage('/menu/6.png'), 'Искажение');
                                
menu32.additem(LoadImage('/menu/7.png'), 'Черно-белый');
                                
menu32.additem(LoadImage('/menu/back.png'), 'Назад в редактор');
                                
menu32.drawmenurepaint;

                                
repeat
                                key
:=KeyToAction(GetKeyClicked);
                                if 
key=GA_DOWN then begin CursorDownDrawMenuRepaintDelay(100); end;
                                if 
key=GA_UP then begin CursorUpDrawMenuRepaintDelay(100); end;
                                
until (key=GA_FIRE); delay(100);

                                    
sel := menu32.selected;
                                    if 
sel <> 8 then im := effects.effect(im,sel);
                        
end;
                        if 
sel 2 then break;
                        
                        

            
until false;
    
end;

initialization
end



Piligrim 19.03.2009 00:21

Ответ: Lib_menu32 - Графическое меню без головной боли
 
попробуй заменить GetKeyClicked на GetKeyPressed

Doctor Drive 20.03.2009 16:41

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Нифига. Меню просто не появляется :(
Картинку показывает и все...

odd 24.03.2009 08:27

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Я пробовал. При отключении картинок в меню всё нормально показывает.
Может не так прописана одна из иконок меню? Проверь.
Нижний текст не так рисует? Исправь на
PHP код:

DrawString('5 - Menu'getwidth/2twgetheight-th); 

У тебя просто не в том порядке параметры стоят

И вообще как-то странно, что у тебя программа вообще работает.
У меня на строку
PHP код:

menu32.CreateCursor(130244278190250); 

ругается. Нужно делать так:
PHP код:

menu32.loadcursor(menu32.CreateCursor(130244278190250)); 

Может у тебя старая версия библиотеки? Скачай более свежую.

Doctor Drive 25.03.2009 21:28

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Кароче забейте. Я в form это меню сделал :)

odd, хз. Вроде новая, ладно, спс...
А с тем что текст не так рисует, это я чтото конкретно глюкнул)))))))))))))

cHeRsAnYa 28.03.2009 16:10

Ответ: Lib_menu32 - Графическое меню без головной боли
 
Имеется такой баг: http://pic.ipicture.ru/uploads/090328/5C042QVVGr.jpg Конечно можно решить очисткой экрана перед каждой отрисовкой меню, но так не должно быть.
И вот: http://pic.ipicture.ru/uploads/090328/RgWT9HrUfi.jpg (обведено красным) - буквы "i" почти не видно. От шрифта не зависит.

Есть ещё вопрос - как сделать фон для меню? Функции такой не нашёлю


Часовой пояс GMT +4, время: 18:39.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot