ERLANG wx小部件加载png

仅adi

我试图构建一个包含PNG照片的GUI。PNG加载的代码在加载到空框架时效果很好,但是在此代码上我看不到照片。我试图更改wxBoxSizers的选项和面板上的位置{0,0},但仍然看不到照片。有什么帮助吗?

首先,我设置了所有框架和组件

-module(neuron_wx).
-author("adisolo").
%% API
-export([start/0, handleButtonStart/2]).
-include_lib("wx/include/wx.hrl").

-record(data, {env, file}).

%% Will get the pid of server
%% will send the information on button pressing
start() ->

  %%Frame and components build
  WX = wx:new(),
  Frame = wxFrame:new(wx:null(), 1, "Top Frame"),
  TopTxt = wxStaticText:new(Frame, ?wxID_ANY, "Analog Neuron final Project"), %%?wxID_ANY


  %L Components
  TextConfiguration = wxStaticText:new(Frame, ?wxID_ANY, "Program Configuration"), %%?wxID_ANY
  TextSetNumNeurons = wxStaticText:new(Frame, ?wxID_ANY, "Enter number of Neurons per Layer"), %%?wxID_ANY
  TextCtrlNeurons = wxTextCtrl:new(Frame, ?wxID_ANY,  [{value, "example:4 3 6 7"}]),
  ButtonBuild = wxButton:new(Frame, ?wxID_ANY, [{label, "Build"}]), %{style, ?wxBU_LEFT}
  FilePickerInput = wxFilePickerCtrl:new(Frame, ?wxID_ANY),
  ButtonStart = wxButton:new(Frame, ?wxID_ANY, [{label, "Start"}]),

  %Buttons
  wxButton:connect(ButtonStart, command_button_clicked, [{callback, fun handleButtonStart/2}, {userData, #data{env = wx:get_env(), file=FilePickerInput}}]),

这是我放入面板并使用图片的地方

  %R Components
  TextNet = wxStaticText:new(Frame, ?wxID_ANY, "Net Description"), %%?wxID_ANY

  %% panel for picture
  Panel = wxPanel:new(Frame),
  %% bitmap
  PictureDraw = wxImage:new("Erlang_logo.png"),
  Picture = wxBitmap:new(PictureDraw),
  wxPanel:connect(Panel, paint, [{callback,fun(WxData, _)->panelPictureUpdate(Picture, WxData)end}]),


  %3 Components
  TextOutput = wxStaticText:new(Frame, ?wxID_ANY, "Program Output"), %%?wxID_ANY



  %%Font set
  Font = wxFont:new(20, ?wxFONTFAMILY_ROMAN, ?wxFONTSTYLE_NORMAL, ?wxFONTWEIGHT_NORMAL),
  wxTextCtrl:setFont(TopTxt, Font),
  Font2 = wxFont:new(18, ?wxFONTFAMILY_ROMAN, ?wxFONTSTYLE_NORMAL, ?wxFONTWEIGHT_NORMAL),
  wxTextCtrl:setFont(TextConfiguration, Font2),
  wxTextCtrl:setFont(TextOutput, Font2),
  wxTextCtrl:setFont(TextNet, Font2),

  Font3 = wxFont:new(12, ?wxFONTFAMILY_ROMAN, ?wxFONTSTYLE_NORMAL, ?wxFONTWEIGHT_NORMAL),
  wxTextCtrl:setFont(TextSetNumNeurons, Font3),


  %%Sizer Attachment
  MainSizer = wxBoxSizer:new(?wxVERTICAL),
  MainSizer2 = wxBoxSizer:new(?wxHORIZONTAL),
  MainSizerL = wxBoxSizer:new(?wxVERTICAL),
  MainSizerR = wxBoxSizer:new(?wxVERTICAL),
  MainSizer3 = wxBoxSizer:new(?wxVERTICAL),

  wxSizer:add(MainSizer, TopTxt, [{flag, ?wxALIGN_TOP bor ?wxALIGN_CENTER}, {border, 5}]),
  wxSizer:add(MainSizer, MainSizer2), %,[{flag, ?wxALIGN_CENTER}]),
  wxSizer:add(MainSizer, MainSizer3),
  wxSizer:add(MainSizer2, MainSizerL, [{border, 5}]),%{flag, ?wxALIGN_LEFT},
  wxSizer:add(MainSizer2, MainSizerR, [{border, 5}]),%{flag, ?wxALIGN_RIGHT},

  %% Assign to L
  lists:foreach(fun(X)-> wxSizer:add(MainSizerL, X, [{flag, ?wxALL bor ?wxEXPAND}, {border, 8}]) end,
    [TextConfiguration, TextSetNumNeurons, TextCtrlNeurons, ButtonBuild, FilePickerInput, ButtonStart]),
  %wxSizer:add(MainSizerL, TextConfiguration, [{flag, ?wxALL bor ?wxEXPAND}, {border, 5}]),
  %wxSizer:add(MainSizerL, TextSetNumNeurons, [{flag, ?wxALL bor ?wxEXPAND}, {border, 5}]),
  %wxSizer:add(MainSizerL, TextCtrlL, [{flag, ?wxALL bor ?wxEXPAND}, {border, 5}]),

  %% Assign to R
  wxSizer:add(MainSizerR, TextNet, [{flag, ?wxALL bor ?wxALIGN_CENTRE }, {border, 8}]),
  wxSizer:add(MainSizerR, Panel, [{flag, ?wxEXPAND}]),%, {proportion, 1}, {border, 8}]),

  %% Assign to 3
  wxSizer:add(MainSizer3, TextOutput, [{flag, ?wxALL bor ?wxALIGN_CENTRE }, {border, 8}]),


  wxWindow:setSizer(Frame, MainSizer),
  %%Show Frame
  wxFrame:show(Frame).

handleButtonStart(WxData,_)->
  %Get the userdata
  Data=WxData#wx.userData,
  wx:set_env(Data#data.env),
  FilePicker = Data#data.file,
  %Use the info
  Frame = wxFrame:new(wx:null(), ?wxID_ANY, "Print"),
  Text=io_lib:format("The file is: ~p~n", [wxFilePickerCtrl:getPath(FilePicker)]),
  wxStaticText:new(Frame, ?wxID_ANY, Text),
  wxFrame:show(Frame).

这是将图片绘制到面板上(面板“ paint”的回调),我认为这不是我的代码中的问题,因为它确实在我尝试过的空白帧上起作用。

% upload the picture to the panel
  panelPictureUpdate(Picture, #wx{obj =Panel} ) ->
  %% display picture
  DC = wxPaintDC:new(Panel),
  wxDC:drawBitmap(DC, Picture, {0,0}),
  wxPaintDC:destroy(DC),
  ok.
仅adi

问题是图片没有正确缩放。我使用了面板的油漆手柄:

wxPanel:connect(Panel, paint, [{callback,fun(WxData, _)->panelPictureUpdate({Frame,PictureDraw}, WxData)end}])

重新绘制图片,每次调整窗口大小。

{Width, Height} = wxPanel:getSize(Panel),
  PictureDrawScaled = wxImage:scale(PictureDraw, Width, Height),
  %% display picture
  Picture = wxBitmap:new(PictureDrawScaled),
  DC = wxPaintDC:new(Panel),
  wxDC:drawBitmap(DC, Picture, {0,0}),
  wxPaintDC:destroy(DC)

这样,图片将按比例缩放到面板尺寸。

结果。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Erlang 包加载失败

来自分类Dev

为什么我的Erlang Shell不加载钢筋依赖项?

来自分类Dev

如何使用erlang文件连续在Riak中加载数据

来自分类Dev

RabbitMQ未加载最新版本的Erlang

来自分类Dev

Django 小部件未加载

来自分类Dev

KDE 小部件未加载 - Netspeed 小部件

来自分类Dev

如何禁用wx python小部件中的调整大小?

来自分类Dev

如何禁用wx python小部件中的调整大小?

来自分类Dev

Erlang的Orddict?

来自分类Dev

Erlang变量

来自分类Dev

Erlang推断

来自分类Dev

在PhoneJS的标签小部件内加载dxWidget

来自分类Dev

Twitter窗口小部件并非始终加载

来自分类Dev

在Android中加载小部件时出错

来自分类Dev

Android ListView小部件异步图像加载

来自分类Dev

修复Conky小部件,不加载

来自分类Dev

扩展从 UI 文件加载的小部件

来自分类Dev

Erlang,是否可以在不重新启动Shell的情况下重新加载或升级nif库?

来自分类Dev

将erlang值保存到文件并将其重新加载的过程是什么?

来自分类Dev

如何配置Riak 2以允许加载自定义erlang模块?

来自分类Dev

在Erlang应用程序中加载依赖关系的代码路径的正确方法是什么。

来自分类Dev

如何配置Riak 2以允许加载自定义erlang模块?

来自分类Dev

如何编写分布式Erlang中所有节点上的加载模块的代码?

来自分类Dev

在Erlang应用程序中加载依赖关系的代码路径的正确方法是什么。

来自分类Dev

使用erlang wx模块会导致错误:检测到程序和库构建版本之间的不匹配

来自分类Dev

从Erlang Shell使用Rabbitmq-erlang-client?

来自分类Dev

Erlang Web开发(Erlang新手)

来自分类Dev

在为GNU Radio开发时,我应该使用WX GUI还是Qt GUI小部件?

来自分类Dev

如何在wxpython中更改wx.TextCtrl小部件的形状?

Related 相关文章

  1. 1

    Erlang 包加载失败

  2. 2

    为什么我的Erlang Shell不加载钢筋依赖项?

  3. 3

    如何使用erlang文件连续在Riak中加载数据

  4. 4

    RabbitMQ未加载最新版本的Erlang

  5. 5

    Django 小部件未加载

  6. 6

    KDE 小部件未加载 - Netspeed 小部件

  7. 7

    如何禁用wx python小部件中的调整大小?

  8. 8

    如何禁用wx python小部件中的调整大小?

  9. 9

    Erlang的Orddict?

  10. 10

    Erlang变量

  11. 11

    Erlang推断

  12. 12

    在PhoneJS的标签小部件内加载dxWidget

  13. 13

    Twitter窗口小部件并非始终加载

  14. 14

    在Android中加载小部件时出错

  15. 15

    Android ListView小部件异步图像加载

  16. 16

    修复Conky小部件,不加载

  17. 17

    扩展从 UI 文件加载的小部件

  18. 18

    Erlang,是否可以在不重新启动Shell的情况下重新加载或升级nif库?

  19. 19

    将erlang值保存到文件并将其重新加载的过程是什么?

  20. 20

    如何配置Riak 2以允许加载自定义erlang模块?

  21. 21

    在Erlang应用程序中加载依赖关系的代码路径的正确方法是什么。

  22. 22

    如何配置Riak 2以允许加载自定义erlang模块?

  23. 23

    如何编写分布式Erlang中所有节点上的加载模块的代码?

  24. 24

    在Erlang应用程序中加载依赖关系的代码路径的正确方法是什么。

  25. 25

    使用erlang wx模块会导致错误:检测到程序和库构建版本之间的不匹配

  26. 26

    从Erlang Shell使用Rabbitmq-erlang-client?

  27. 27

    Erlang Web开发(Erlang新手)

  28. 28

    在为GNU Radio开发时,我应该使用WX GUI还是Qt GUI小部件?

  29. 29

    如何在wxpython中更改wx.TextCtrl小部件的形状?

热门标签

归档