Показать сообщение отдельно
Старый 17.03.2009, 20:36   #40
Doctor Drive
Нуждающийся
 
Аватар для Doctor Drive
 
Регистрация: 28.01.2009
Сообщений: 65
Написано одно полезное сообщение
(для 2 участников)
Ответ: Lib_menu32 - Графическое меню без головной боли

Нету смысла выкладывать целый исходник. Вот разве что целый юнит выложу (напишу сюда). Место проблемы возле коментариев (тоесть часть кода, где должно появится меню и то, где текст не там рисует) Вот:
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

(Offline)
 
Ответить с цитированием