1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
1

Изображения в wxWidgets

24.08.2023, 17:17. Показов 3190. Ответов 39

Author24 — интернет-сервис помощи студентам
Доброго времени суток.
Ни как не могу понять, как показать в окне wxWidgets изображение. Прочитал документацию, прошерстил сайты, и всё равно ничего не работает.
Кто-нибудь просто напишите простой и понятный пример вывода изображения, пожалуйста!!
Заранее огромное спасибо!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.08.2023, 17:17
Ответы с готовыми решениями:

wxWidgets - изображения и контролы вместе: как правильно?
Первое - в wxWidgets чайник. В C++ - вполне на уровне, если не трогать интерфейсы :) Имею...

Изображения в wxWidgets
Необходимо создать wxBitmapButton и установить ей картинку из файла относительно местоположения к...

wxWidgets вывод изображения в окно формы
Добрый день, прошу помочь разобраться с выводом картинки в окно формы с помощью wxWidgets....

Wxwidgets
Доброй вечер! Недавно начал изучать курс по роботе с библиотекой Wxwidgets, но к сожалению не...

39
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
24.08.2023, 19:41 2
1 вариант
C++
1
2
3
wxBitmap bitmap(wxT("image.png"), wxBITMAP_TYPE_PNG);
wxClientDC dc(this);
dc.DrawBitmap(bitmap, 0, 0, false);
2 вариант
C++
1
2
3
wxImage image(wxT("image.png"), wxBITMAP_TYPE_PNG);
wxBitmap bitmap(image);
wxStaticBitmap *sb = new wxStaticBitmap(this, wxID_ANY, bitmap);
3 вариант
C++
1
2
3
4
wxImage image(wxT("image.png"), wxBITMAP_TYPE_PNG);
wxBitmap bitmap(image);
wxClientDC dc(this);
dc.DrawBitmap(bitmap, 0, 0, false);
1
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:36  [ТС] 3
Попробовал, выдаёт данную ошибку:
Миниатюры
Изображения в wxWidgets  
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 13:41 4
Egor_klchkff, файл картинка есть?

Добавлено через 1 минуту
Egor_klchkff, все варианты пробовал?

Добавлено через 2 минуты
Egor_klchkff, попробуй это
C++
1
2
3
4
wxImage image(wxT("image.png"), wxBITMAP_TYPE_PNG);
wxBitmap bitmap(image);
wxMemoryDC dc(bitmap);
dc.DrawBitmap(bitmap, 0, 0, false);
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:47  [ТС] 5
попробовал всё.
ошибка с любыми картинками:
Миниатюры
Изображения в wxWidgets  
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 13:50 6
Egor_klchkff, полноценный код можете показать? или просто скопировали?

Добавлено через 23 секунды
Egor_klchkff, полный путь к картинке пропиши
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:51  [ТС] 7
Весь код? Или только часть с картинкой?
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 13:52 8
Egor_klchkff, полный путь пропиши к картинке.
напиши поменялось что-то
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:54  [ТС] 9
Не-а, не поменялось
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 13:55 10
Egor_klchkff, а двойной слэш \\ делал?

C++
1
2
3
4
wxImage image(wxT("C:\\Users\\53535\\Downloads\\image.png"), wxBITMAP_TYPE_PNG);
wxBitmap bitmap(image);
wxMemoryDC dc(bitmap);
dc.DrawBitmap(bitmap, 0, 0, false);
Добавлено через 24 секунды
Цитата Сообщение от Egor_klchkff Посмотреть сообщение
Весь код? Или только часть с картинкой?
скинь лучше весь код
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:56  [ТС] 11
Делал(
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 13:58 12
Egor_klchkff, wxWidgets установлен? включал в include?
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 13:59  [ТС] 13
App.h
C++
1
2
3
4
5
6
7
8
#pragma once
#include <wx/wx.h>
 
class App : public wxApp
{
public:
    bool OnInit();
};
App.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include "App.h"
#include "MainFrame.h"
#include <wx/wx.h>
 
wxIMPLEMENT_APP(App);
 
bool App::OnInit() //фактически точка входа нашей программы
{
    MainFrame* mainFrame = new MainFrame("Swapper");
    mainFrame->SetClientSize(1200, 900);
    mainFrame->Center();
    mainFrame->Show();
 
    return true; //если false, приложение закроется
}
MainFrame.h
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#pragma once
#include <wx/wx.h>
#include <map>
 
class MainFrame : public wxFrame
{
public:
    MainFrame(const wxString& title);
private:
    void CreateControls();
    void BindEventHandlers();
 
    wxPanel* panel;
    wxStaticText* headline;
    wxStaticText* here;
    wxStaticText* result;
    wxTextCtrl* input;
    wxTextCtrl* output;
    wxButton* clearButton;
    wxRadioBox* choice;
 
    std::map<char, char> letters = { {'q', 'й'}, {'w', 'ц'}, {'e', 'у'}, {'r', 'к'}, {'t', 'е'}, {'y', 'н'}, {'u', 'г'}, {'i', 'ш'}, {'o', 'щ'}, {'p', 'з'}, {'[', 'х'}, {']', 'ъ'}, {'a', 'ф'}, {'s', 'ы'}, {'d', 'в'}, {'f', 'а'}, {'g', 'п'}, {'h', 'р'}, {'j', 'о'}, {'k', 'л'}, {'l', 'д'}, {';', 'ж'}, {'\'', 'э'}, {'z', 'я'}, {'x', 'ч'}, {'c', 'c'}, {'v', 'м'}, {'b', 'и'}, {'n', 'т'}, {'m', 'ь'}, {',', 'б'}, {'.', 'ю'}, {'/', '.'}, {'`', 'ё'}, {'@', '"'}, {'#', '№'}, {'$', ';'}, {'^', ':'}, {'&', '?'}, {':', 'Ж'}, {'"', 'Э'}, {'{', 'Х'}, {'}', 'Ъ'}, {'|', '/'}, {'~', 'Ё'}, {'<', 'Б'}, {'>', 'Ю'}, {'?', ','}, {'Q', 'Й'}, {'W', 'Ц'}, {'E', 'У'}, {'R', 'К'}, {'T', 'Е'}, {'Y', 'Н'}, {'U', 'Г'}, {'I', 'Ш'}, {'O', 'Щ'}, {'P', 'З'}, {'A', 'Ф'}, {'S', 'Ы'}, {'D', 'В'}, {'F', 'А'}, {'G', 'П'}, {'H', 'Р'}, {'J', 'О'}, {'K', 'Л'}, {'L', 'Д'}, {'Z', 'Я'}, {'X', 'Ч'}, {'C', 'С'}, {'V', 'М'}, {'B', 'И'}, {'N', 'Т'}, {'M', 'Ь'} };
 
    void OnTextChanged(wxCommandEvent& evt);
    void OnClearButtonClicked(wxCommandEvent& evt);
    void OnChoiceChanged(wxCommandEvent& evt);
 
    void Swapped(const wxString& text);
 
    void SwapMap(std::map<char, char>& letters);
};
MainFrame.cpp
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#include "MainFrame.h"
#include <wx/wx.h>
//#include <wx/image.h>
//#include <wx/bitmap.h>
//#include <wx/dc.h>
 
MainFrame::MainFrame(const wxString& title) : wxFrame(nullptr, wxID_ANY, title)
{
    CreateControls();
    BindEventHandlers();
 
    wxImage image(wxT("C:\\Users\\egork\\source\\repos\\Swapper\\pls.png"), wxBITMAP_TYPE_PNG);
    wxBitmap bitmap(image);
    wxMemoryDC dc(bitmap);
    dc.DrawBitmap(bitmap, 0, 0, false);
}
 
void MainFrame::CreateControls()
{
    panel = new wxPanel(this);
 
    wxFont headlineFont(wxFontInfo(wxSize(0, 70)).Bold());
    wxFont hereFont(wxFontInfo(wxSize(0, 20)));
 
    headline = new wxStaticText(panel, wxID_ANY, "Swapper", wxPoint(0, 22), wxSize(1200, -1), wxALIGN_CENTER);
    headline->SetFont(headlineFont);
 
    here = new wxStaticText(panel, wxID_ANY, "Введите текст \\/", wxPoint(20, 160), wxDefaultSize);
    here->SetFont(hereFont);
 
    input = new wxTextCtrl(panel, wxID_ANY, "", wxPoint(20, 200), wxSize(500, 400), wxTE_MULTILINE);
    output = new wxTextCtrl(panel, wxID_ANY, "", wxPoint(680, 200), wxSize(500, 400), wxTE_MULTILINE | wxTE_READONLY);
 
    clearButton = new wxButton(panel, wxID_ANY, "Clear", wxPoint(520, 620), wxSize(160, 70));
 
    wxArrayString choices;
    choices.Add("QWERTY -> ЙЦУКЕН");
    choices.Add("ЙЦУКЕН -> QWERTY");
    choice = new wxRadioBox(panel, wxID_ANY, "Раскладка", wxPoint(500, 700), wxDefaultSize, choices, 1);
}
 
void MainFrame::BindEventHandlers()
{
    input->Bind(wxEVT_TEXT, &MainFrame::OnTextChanged, this);
    clearButton->Bind(wxEVT_BUTTON, &MainFrame::OnClearButtonClicked, this);
    choice->Bind(wxEVT_RADIOBOX, &MainFrame::OnChoiceChanged, this);
}
 
void MainFrame::OnTextChanged(wxCommandEvent& evt)
{
    Swapped(input->GetValue());
}
 
void MainFrame::OnClearButtonClicked(wxCommandEvent& evt)
{
    input->Clear();
}
 
void MainFrame::OnChoiceChanged(wxCommandEvent& evt)
{
    SwapMap(letters);
 
    wxString temp = input->GetValue();
    input->ChangeValue(output->GetValue());
    output->ChangeValue(temp);
}
 
void MainFrame::Swapped(const wxString& text)
{
    wxString toOutput;
 
    for (auto el : text)
    {
        bool flag = false;
 
        for (auto l : letters)
        {
            if (el == l.first)
            {
                toOutput += l.second;
                flag = true;
                break;
            }
        }
 
        if (!flag)
        {
            toOutput += el;
        }
    }
 
    output->ChangeValue(toOutput);
}
 
void MainFrame::SwapMap(std::map<char, char>& letters)
{
    std::map<char, char> temp;
 
    for (auto el : letters)
    {
        temp.emplace(el.second, el.first);
    }
 
    letters = temp;
}
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 14:08 14
Egor_klchkff, раскомментируй include в mainframe.cpp

Добавлено через 3 минуты
Egor_klchkff, изменилось что-то?

Добавлено через 4 минуты
Попробуй сделать картинку в формат XPM Изображения в wxWidgets
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 15:13  [ТС] 15
Ничего не изменилось. Ни с include, ни с xpm
0
2443 / 1841 / 406
Регистрация: 15.12.2013
Сообщений: 8,237
25.08.2023, 15:25 16
Egor_klchkff, пример image отрабатывает нормально или тоже ошибка?
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 15:27  [ТС] 17
Все 3 варианта выдают ошибку
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 15:27 18
Egor_klchkff, попробуй вызвать wxlnitAlllmageHandlers () или wxlmage::AddHandler. должно заработать
0
1 / 1 / 0
Регистрация: 08.06.2023
Сообщений: 32
25.08.2023, 15:29  [ТС] 19
Теперь ошибку не выдаёт, но изображения нет
0
1528 / 1944 / 84
Регистрация: 28.04.2021
Сообщений: 4,439
Записей в блоге: 22
25.08.2023, 15:31 20
Egor_klchkff, какой метод использовал?
0
25.08.2023, 15:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.08.2023, 15:31
Помогаю со студенческими работами здесь

WxWidgets
Здравствуйте, пытаюсь откомпилировать пример wxMathPlot-0.1.2\samples\sample. IDE - codeblocks...

WxWidgets
Надеюсь здесь мне кто то поможет. Мне нужно создать шрифт, который обводит буквы....

wxWidgets
делаю презентацию по теме: Кроссплатформенный текстовый редактор с использованием библиотеки...

wxWidgets 2.9.3
Решил установить wxWidgets 2.9.3. Компилировал с помощью MinGW, вот так mingw32-make -f...

wxWidgets и Qt
Решил поднять такой вопрос: &quot;А нужны ли нам wxWidgets, Qt или другие какие кросплатформенные...

Qt vs wxWidgets
Здравствуйте! Объясните, пожалуйста, чем по сути отличается создание оконных приложений с помощью...

Wxwidgets
Добрый день! На данный момент пытаюcь поставить библиотеку Wxwidgets на Visual Studio 2019. Но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru