Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130

Вывести картинку вместо рисования графика

17.12.2012, 02:03. Показов 2135. Ответов 20
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мне сказали чтоб после высчитывания цыкла выводила картинку "Image" а не график строило, подскажите как, и где там именно впесат ькод, так как написал и нисработало, там два цикла и надо чтоб пока выводилась одна и там же картинка, но прописана, в каждом цикле. вот код:
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
106
107
108
109
110
111
112
113
114
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
#include<math.h>
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
float f(float kx,float eps)
{
    float s=kx;
    float u=kx;
    int  n=0;
    float A,B;
    while(abs(u)>=eps)
    {
        u=-u*sqrt(2*kx)/(2*n+2)/(2*n+3);
        s=s+u;
        n++;
    }
    return s;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N3Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N1Click(TObject *Sender)
{
if(MessageBox(0,"Цель программы состоит в том, что бы определить собственные частоты колебаний балки с бесконечным числом степеней свободы с консольным закреплением.","Програма",MB_OK)==IDOK);
 {
 }}
//---------------------------------------------------------------------------
void __fastcall TForm1::N2Click(TObject *Sender)
{
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N4Click(TObject *Sender)
{
if(MessageBox(0,"Після запуску програми перед Вами з'явиться панель, у яку Вам необхідно внести дані для розрахунку. Для того, щоб внести значення Вам необхідно встановити курсор миші (або ж клавіша Tab) в потрібне порожнє поле після чого внести відповідні значення и натиснути кнопку <Розрахунок>","Програма",MB_OK)==IDOK);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::N5Click(TObject *Sender)
{
 Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 Image1->Canvas->MoveTo(0-1000,cos(0)*30+(Image1->Height)/2);
     float kx=StrToFloat(Edit1->Text);
     float eps=StrToFloat(Edit2->Text);
     float w,w1,w2;
     float E=21000;
     float D=eps;
     float d=D/100;
     float m=kx/d;
     float J=3.14*d*d*d/64;
     float hkx=0.01;
     float s1;
     float s2;
     float kxs1;
     float kxs2;
     for(int i=0;i<2;i++)
     {
     s2=0;
     s1=f(kx,eps);
     m1:
     Image1->Canvas->LineTo(kx*30-1000+15,cos(kx)*30+(Image1->Height)/2);
     kx=kx+hkx;
     w=sqrt((3*E*J)/(kx*kx*m));
     s2=f(kx,eps);
     if(s1*s2>0)
        {
            s1=s2;
            goto m1;
        }
        if(i==0)
                kxs1=kx-hkx/2;
                 w1=kx/230-hkx/2;
     Image1->Canvas->Ellipse(kxs1*30-5-1000+190,cos(w1)+(Image1->Height)/2-5,kxs1*30+5-1000+190,cos(kxs1)+(Image1->Height)/2+5);
     TStringList *List = new TStringList;
     Label1->Caption="I собственная частота = "+FloatToStr(w1);
    float s3=f(kx,eps);
     m2:
     kx=kx+hkx;
     if(s1*s3>0)
     {
        s1=s3;
        goto m2;
     }
     if(i==0)
        kxs2=kx-hkx/2;
        w2=kx/230-hkx;
     Image1->Canvas->Ellipse(kxs2*30-5-1000+97,cos(kxs2)+(Image1->Height)/2-5,kxs2*30+5-1000+97,cos(kxs2)+(Image1->Height)/2+5);
     Label2->Caption="II собственная частота = "+FloatToStr(w2);
     }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1Click(TObject *Sender)
{
       Image1->Canvas->MoveTo((Image1->Width)/2,0);
      Image1->Canvas->LineTo((Image1->Width)/2,Image1->Height);
      Image1->Canvas->MoveTo(0,(Image1->Height)/2);
      Image1->Canvas->LineTo(Image1->Width,(Image1->Height)/2);
}
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.12.2012, 02:03
Ответы с готовыми решениями:

PictureBox. Вместо рисования шарика вставить свою картинку
Подскажите, как вместо рисования шарика вставить свою картинку? Приложение WindowsForm. private void pictureBox1_Paint(object sender,...

Как вместо символа вывести картинку?
Как можно вывести вместо символа вывести картинку? Задание такое: даны две литеры – латинская буква (от a до h) и цифра (от 1 до 8),...

DevExpress, как вместо True или False вывести картинку
Добрый день. Уважаемые гуру, кто знает или обладает примером, помогите пожалуйста разобраться сxGrid. Не могу понять как вместо chekbox...

20
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
17.12.2012, 16:51
Вообще нифига не понятно. Ладно слова, но ты хоть логику построения предложений не коверкай. И поподробнее, чего там не работает...
0
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
17.12.2012, 21:25  [ТС]
Ок, сори за то что не првильно объяснил. вот первый цыкл в коде:
C++
1
2
3
Image1->Canvas->Ellipse(kxs1*30-5-1000+190,cos(w1)+(Image1->Height)/2-5,kxs1*30+5-1000+190,cos(kxs1)+(Image1->Height)/2+5);
     TStringList *List = new TStringList;
     Label1->Caption="I собственная частота = "+FloatToStr(w1);
мне надо, чтобы в этом цыкле выводило рисунок, предположим какой нибуть там "image.jpg". А сейчас у меня программа просто рисует сама график. Мне надо заменить график этот, этим рисунком, чтоб не рисовало, а выводило. вот второй цыкл, надо прописать код в 1 и 2 цыкле.
C++
1
2
   Image1->Canvas->Ellipse(kxs2*30-5-1000+97,cos(kxs2)+(Image1->Height)/2-5,kxs2*30+5-1000+97,cos(kxs2)+(Image1->Height)/2+5);
     Label2->Caption="II собственная частота = "+FloatToStr(w2);
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
17.12.2012, 23:24
У Image есть св-во Picture видное через IDE, указываешь там какую картинку выводить, и картинка выводиться.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.12.2012, 00:13
А также у него есть замечательный метод LoadFromFile()...
0
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
18.12.2012, 01:07  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
А также у него есть замечательный метод LoadFromFile()...
вот через этот метод мне надо бы написать, только подскажи как там правильно, а то прописывал не заработало.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.12.2012, 02:23
вот и покажите, как прописывал
0
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
18.12.2012, 02:59  [ТС]
вот так делал:
C++
1
2
3
Image1->Canvas->Ellipse(kxs1*30-5-1000+190,cos(w1)+(Image1->Height)/2-5,kxs1*30+5-1000+190,cos(kxs1)+(Image1->Height)/2+5);
if(OpenPictureDialog1->Execute())
  Image1->Ficture->LoadFromFile(OpenPictureDialog1->Image);
так же пробывал так:
C++
1
2
3
4
Image1->Canvas->Ellipse(kxs1*30-5-1000+190,cos(w1)+(Image1->Height)/2-5,kxs1*30+5-1000+190,cos(kxs1)+(Image1->Height)/2+5);
TStringList *List = new TStringList;
AnsiString Name = "C:\\Image";
List -> LoadFromFile(Name);
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.12.2012, 03:44
Что это за набор символов?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.12.2012, 07:26
Это, коллега, бурная фантазия человека, никогда не видевшего справки.
C++
1
2
if( OpenPictureDialog1->Execute( ) )
  Image1->Picture->LoadFromFile( OpenPictureDialog1->FileName );
Вот подгрузка картинки по пути (путь к папке с программой)\pictures\image_number_10.bmp:
C++
1
2
int i = 10;
Image1->Picture->LoadFromFile( ExtractFilePath( Application->ExeName ) + "pictures\\image_number_" + IntToStr( i ) + ".bmp" );
1
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.12.2012, 07:35
А на кой рисовать на имедже элипс, а следующей строкой грузить в него картинку с диска? И причем тут TStringList?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
18.12.2012, 10:24
вот какой код был, такой и вставил
0
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
18.12.2012, 10:44  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Это, коллега, бурная фантазия человека, никогда не видевшего справки.
C++
1
2
if( OpenPictureDialog1->Execute( ) )
  Image1->Picture->LoadFromFile( OpenPictureDialog1->FileName );
Вот подгрузка картинки по пути (путь к папке с программой)\pictures\image_number_10.bmp:
C++
1
2
int i = 10;
Image1->Picture->LoadFromFile( ExtractFilePath( Application->ExeName ) + "pictures\\image_number_" + IntToStr( i ) + ".bmp" );
оО буду теперь знать спасибо, только теперь вот не пойму почему то ошибка вот такая. Посмотри скриншот во вложении.
Миниатюры
Вывести картинку вместо рисования графика  
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.12.2012, 10:47
bmp картинку надо вставлять, а не jpg
0
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
18.12.2012, 10:59  [ТС]
Цитата Сообщение от gumi250 Посмотреть сообщение
bmp картинку надо вставлять, а не jpg
ок, исправиль всёравно есть ошибка, вот не пойму ну почему.
Миниатюры
Вывести картинку вместо рисования графика  
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
18.12.2012, 11:01
В пути к файлу слэши экранируются:
C++
1
c:\\Test\\image1.bmp
0
 Аватар для gumi250
435 / 402 / 57
Регистрация: 06.02.2012
Сообщений: 1,384
18.12.2012, 11:03
два слеша надо писать не "D:\1\1", а "D:\\1\\1"
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.12.2012, 11:05
Про jpg верно - чтоб эти файлы научиться использовать идем сюда:
Не могу открыть картинку
Загрузка jpg изображений из dll
Загрузка изображения в форму
Графика в c++ builder

Еще я там строчку разглядел:
Imaqe1->Picture->LoadFromFile( ExtractFilePath ( Application->ExeName ) + "D:\униве ...(далее что-то там)
Это полная ерунда. Функция ExtractFilePath ( Application->ExeName ) в данном случае предоставляет нам путь к папке с программой, а затем ты присоединяешь к нему абсолютный путь с указанием буквы тома. Где логика?

Добавлено через 45 секунд
и слэши экранировать, разумеется...
1
0 / 0 / 2
Регистрация: 07.12.2012
Сообщений: 130
18.12.2012, 11:08  [ТС]
Цитата Сообщение от BRcr Посмотреть сообщение
Про jpg верно - чтоб эти файлы научиться использовать идем сюда:
Не могу открыть картинку
Загрузка jpg изображений из dll
Загрузка изображения в форму
Графика в c++ builder

Еще я там строчку разглядел:
Imaqe1->Picture->LoadFromFile( ExtractFilePath ( Application->ExeName ) + "D:\униве ...(далее что-то там)
Это полная ерунда. Функция ExtractFilePath ( Application->ExeName ) в данном случае предоставляет нам путь к папке с программой, а затем ты присоединяешь к нему абсолютный путь с указанием буквы тома. Где логика?

Добавлено через 45 секунд
и слэши экранировать, разумеется...
вот тчо там дальше было: + "D:\универ\Новая папка\Новая папка" + IntToStr( i ) + ".bmp" ); Ты мне хочешь сказать что это убрать и вместо: Application->ExeName вписать свой путь? я щас пока вообще плохо соображаю, этого не помню и ток, встал.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
18.12.2012, 11:14
Опять все перепутал... вот что имелось ввиду:
C++
1
Image1->Picture->LoadFromFile( String( "D:\\универ\\Новая папка\\Новая папка\\" ) + IntToStr( i ) + ".bmp" );
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.12.2012, 11:14
Помогаю со студенческими работами здесь

Рисования графика
Есть функция y=x, надо построить график функции интервал например

процедура рисования графика функции
Напишите процедуру рисования графика функции в соответствии с вариантом, указанным в таблице. Предусмотреть вывод оцифрованных координатных...

Область рисования графика функции
Помогите студенту делающему лабу :) Как ограничить область рисования графика? допустим у меня умеется такая функция x=; for...

Графика. Компонент для рисования.
Какой компонент в С++ билдер нужно использовать для рисования??

Программа для рисования графика
Доброго времени суток! Нужно написать программу для рисования графика. Что в ней должно быть? Таблица с фиксированными значениями,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод https:/ / **********/ gallery/ thinkpad-x220-tablet-porn-gzoEAjs . . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru