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

unit Edit;
interface
procedure open;
implementation
uses FileSystem, imloadjsr75, font32, menu32, effects, canvas, jpeg;
procedure open;
var open: string;
im: image;
coefw: real;
tw, th, sel, key: integer;
resize: boolean;
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(im, getwidth, trunc(getwidth/coefw)),0,0);
setcolor(0,0,0);
fillrect(0, getheight-th, getwidth, th);
font32.Font(1);
//ВОТ ТУТ ТЕКСТ НЕ ТАМ РИСУЕТ:
DrawString('5 - Menu', getheight-th, getwidth/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(im, getwidth, trunc(getwidth/coefw)),0,0);
menu32.init;
menu32.CreateCursor(130, 24, 4278190250);
menu32.SetMenuWindow(0, 0, getwidth, getheight);
menu32.MenuFonts(0, 1);
menu32.additem(loadimage('/menu/saveas.png'), 'Save as...');
menu32.additem(loadimage('/menu/effects.png'), 'Effects');
menu32.additem(loadimage('/menu/back.png'), 'Close');
drawmenu; repaint;
repeat
key:=KeyToAction(GetKeyClicked);
if key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end;
if key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(100); end;
until (key=GA_FIRE); delay(100);
sel := menu32.selected;
if sel = 0 then begin
jpeg.saveImage(im, 100, copy(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(im, getwidth, trunc(getwidth/coefw)),0,0);
menu32.init;
menu32.CreateCursor(130, 24, 4278190250);
menu32.SetMenuWindow(0, 0, getwidth, getheight);
menu32.MenuFonts(0, 1);
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.drawmenu; repaint;
repeat
key:=KeyToAction(GetKeyClicked);
if key=GA_DOWN then begin CursorDown; DrawMenu; Repaint; Delay(100); end;
if key=GA_UP then begin CursorUp; DrawMenu; Repaint; Delay(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.
|