- 0
Мультивопрос по мобильным платформам: хранение изображений, загрузка изображений из сети, правильная организация приложения (создание форм, фреймов, объектов)
-
Последние посетители 0 пользователей онлайн
- Ни одного зарегистрированного пользователя не просматривает данную страницу
Вопрос
Ivan B.
Всем привет!
Друзья, проконсультируйте по следующим вопросам:
1. Как правильно хранить изображения, которые используются в приложении: динамически размещаются в TImage, на кнопки, панели т .д.;
2. Приложение будет получать от сервиса текстовые и графические данные (base64) - куда временно записывать загруженные картинки, прежде, чем, к примеру, разместить их на панельки;
3. Как лучше всего (в плане производительности и вообще по "фен шую") организовать приложение, в котором должно быть много разных "окон" - создавать много форм? Может использовать фреймы? Или создавать все на одной форме?
Если несколько форм, то создавать эти формы с запуском приложения или создавать и уничтожать по мере необходимости (как правильно уничтожать и освобождать память?)
4. Как правильно организовать прорисовку создаваемых компонентов?
К примеру мне нужно создать на VertScrollBox много TPanel с TImage и TLabel, делаю это так:
Но прорисовка !первый раз происходит медленно. Это можно как-то ускорить?
И вообще правильно ли делаю, что использую массивы объектов?
это в отдельном потоке: TThread.Synchronize(TThread.CurrentThread, PROCEDURE () begin thVBox:=TVertScrollBox.Create(FMain.ATabs.Tabs[thTabNo]); thVBox.Parent:=FMain.ATabs.Tabs[thTabNo]; thVBox.StyleLookup:='_scrollboxstyleWhite'; thVBox.Align:=TAlignLayOut.Client; end); For i:=0 to Count do BEGIN ... тут без графики, вычисление PosX и PosY TThread.Synchronize(TThread.CurrentThread, PROCEDURE () begin vPanel[i]:=TPanel.Create(thVBox); vPanel[i].Parent:=thVBox; vPanel[i].StyleLookup:='_PanelStyleTile'; vPanel[i].Width:=PanelW; vPanel[i].Height:=PanelH; vPanel[i].Position.X:=PosX; vPanel[i].Position.Y:=PosY; vShadowE:=TShadowEffect.Create(vPanel[i]); vShadowE.Parent:=vPanel[i]; vShadowE.Distance:=3; vShadowE.Opacity:=0.2; vShadowE.Softness:=0.2; vShadowE.Enabled:=True; vImg[i]:=TImage.Create(vPanel[i]); vImg[i].Parent:=vPanel[i]; vImg[i].Height:=Trunc(PanelH*ImageSizePercent); vImg[i].Margins.Left:=2; vImg[i].Margins.Right:=2; vImg[i].Margins.Top:=2; vImg[i].Align:=TAlignLayOut.Top; vImg[i].Bitmap:=pImageList.Bitmap(szImage,i); vImg[i].WrapMode:=TImageWrapMode.Fit; vImg[i].OnTap:=FMain.ConClick; vLblText[i]:=TLabel.Create(vPanel[i]); vLblText[i].Parent:=vPanel[i]; vLblText[i].Height:=Trunc(PanelH*TextSizePercent); vLblText[i].Margins.Top:=3; vLblText[i].Margins.Left:=2; vLblText[i].Margins.Right:=2; vLblText[i].Align:=TAlignLayOut.Client; vLblText[i].StyledSettings:= vLblText[i].StyledSettings-[TStyledSetting.Family, TStyledSetting.Size, TStyledSetting.Style, TStyledSetting.FontColor, TStyledSetting.Other]; vLblText[i].TextSettings.Font.Family:='Open Sans'; vLblText[i].TextSettings.Font.Size:=12; vLblText[i].TextSettings.Font.Style:=[TFontStyle.fsBold]; vLblText[i].TextSettings.HorzAlign:=TTextAlign.Leading; vLblText[i].TextSettings.VertAlign:=TTextAlign.Leading; vLblText[i].Text:=sText[i]; end) end; END;
Заранее спасибо)!
Ссылка на комментарий
11 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.