Нуждающийся
Регистрация: 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.
|