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

Как изменять масштаб графика, отрисованного на компоненте Image, с помощью мыши?

26.02.2009, 15:06. Показов 3791. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
скажите пожалуйста как можно изменять масштаб графика находящийся на компоненте image с помощью мыши, нужно срочно
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
26.02.2009, 15:06
Ответы с готовыми решениями:

Построение графика на компоненте Image
Кто сможет мне помочь в вопросе отрисовки канвы по значениям из 2 столбцов на компоненте Image. Еще и масштабирование графика надо сделать ...

Построение графика в компоненте Image
Построение графика в компоненте Image, графиком является парабола построенная по формуле Y=AX^2+BX+C, где A(edit1), B(edit2) и C(edit 3)...

Как в Дельфи с помощью мыши можно перетаскивать Image?
Здравствуйте, у меня такой вопрос : Как в дельфи с помощью мыши можно перетаскивать image.

5
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
26.02.2009, 23:29
Разиля, с помощью мыши сразу не скажу. Может кто-то из формчан скажет как сделать реакция на скроулинг?
А, если просто измение масштаба, то вот
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
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
#include "math.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CSPIN"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::FormCreate(TObject *Sender)
{
int zoom;
zoom = 3;
StringGrid1->Cells[1][1] = "x";
StringGrid1->Cells[1][2] = "y";
Img->Canvas->Pen->Color = clBlue;
float x,y,xBack,yBack;
xBack = Img->Width;
yBack = Img->Height;
for (x=0; x<=0.8; x=x+0.1)
        {
        y= tanl(x)-(1/3)*tanl(5*x)+(1/5)*tanl(5)-(1/3);
        if (x==0)Img->Canvas->MoveTo((Img->Width)/2+ zoom*50*x,(Img->Height)/2- zoom*50*y);
        Img->Canvas->LineTo(((Img->Width)/2 + zoom*50*x),(Img->Height)/2-zoom*50*y);
        xBack = (Img->Width)/2 + zoom*50*x;
        yBack = (Img->Height)/2 - zoom*50*y;
        RichEdit1->Lines->Add(FloatToStr(x)+" y="+FloatToStr(y));
        }
 
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
float x,y;
x=StrToFloat(LabeledEdit1->Text);
y= tanl(x)-(1/3)*tanl(5*x)+(1/5)*tanl(5)-(1/3);
LabeledEdit2->Text = FloatToStr(y);
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
float a;
a = StrToFloat(Edit1->Text);
if (Edit1->Text != "") Edit2->Text = cos(3.14*a / 180);
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::StringGrid1KeyPress(TObject *Sender, char &Key)
{
 
float a;
if (StringGrid1->Cells[1][1] != "")
        {
        a= StrToFloat(StringGrid1->Cells[1][1]);
        StringGrid1->Cells[1][2]= cos(3.14*a / 180);
        }
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::CSpinEdit1Change(TObject *Sender)
{
Img->Canvas->Rectangle(0,0,Img->Width,Img->Height);
 
int zoom;
if (CSpinEdit1->Text == "") zoom =0;
else zoom = StrToInt(CSpinEdit1->Text);
 
Img->Canvas->Pen->Color = clBlue;
float x,y,xBack,yBack;
xBack = Img->Width;
yBack = Img->Height;
for (x=0; x<=0.8; x=x+0.1)
        {
        y= tanl(x)-(1/3)*tanl(5*x)+(1/5)*tanl(5)-(1/3);
        if (x==0)Img->Canvas->MoveTo((Img->Width)/2+ zoom*50*x,(Img->Height)/2- zoom*50*y);
        Img->Canvas->LineTo(((Img->Width)/2 + zoom*50*x),(Img->Height)/2-zoom*50*y);
        xBack = (Img->Width)/2 + zoom*50*x;
        yBack = (Img->Height)/2 - zoom*50*y;
        RichEdit1->Lines->Add(FloatToStr(x)+" y="+FloatToStr(y));
        }
}
//---------------------------------------------------------------------------
Переменная zoom отвечает за масштаб. Установите компонент CSpinEdit из Sample
файл unit1.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
32
33
34
35
36
37
38
39
40
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
#include <ComCtrls.hpp>
#include <Grids.hpp>
#include "CSPIN.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
        TImage *Img;
        TRichEdit *RichEdit1;
        TLabeledEdit *LabeledEdit1;
        TLabeledEdit *LabeledEdit2;
        TButton *Button1;
        TGroupBox *GroupBox1;
        TEdit *Edit1;
        TEdit *Edit2;
        TStringGrid *StringGrid1;
        TCSpinEdit *CSpinEdit1;
        void __fastcall FormCreate(TObject *Sender);
        void __fastcall Button1Click(TObject *Sender);
        void __fastcall Edit1Change(TObject *Sender);
        void __fastcall StringGrid1KeyPress(TObject *Sender, char &Key);
        void __fastcall CSpinEdit1Change(TObject *Sender);
private:    // User declarations
public:     // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
0
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 38
27.02.2009, 19:06  [ТС]
я вожу максимальное и минимальное значения на интервале [0;0.8] в эдитах , шаг заполнения и при нажатиии кнопки в стригриде должна появится последовательность чисел от максимально до минимально значения, а у меня почему то появляется начиная с минимального только первые 4 значения , вот код, скажите в чем ошибка, нужно срочно

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
int i;
float o,minX,maxX;
 
  o=StrToFloat( Edit6->Text); /*шаг заполнения*/
      minX=StrToFloat( Edit1->Text);/*считываем минимальное занчение*/
      maxX=StrToFloat( Edit2->Text);/*максимальное значение*/
   StringGrid1->Cells[1][1]=minX;
     StringGrid1->Cells[1][i]=maxX;
 
     for ( i=2;i<10; i++)
     {  if (minX<=maxX)
          StringGrid1->Cells[i][1]=minX+(i-1)*o;
 
     }
Добавлено через 2 часа 58 минут 39 секунд
неужели мне никто не поможет
0
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
28.02.2009, 00:49
У Вас выводится только 4 значения т.к свойство StringGrid RowCount = 5. Измените на необходимое значение.
0
0 / 0 / 0
Регистрация: 17.02.2009
Сообщений: 38
28.02.2009, 20:32  [ТС]
я вожу максимальное и минимальное значения на интервале [0;0.8] в эдитах , шаг заполнения и при нажатиии кнопки в стригриде должна появится последовательность чисел от максимально до минимально значения, а у меня почему то выводит значения не совсем верно, например я ввела мин =0, мак=0,5, шаг =0,1 и он у меня выводит 0 0,10000001 0,200000034 и т.д , вот код, скажите в чем ошибка, нужно срочно
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
  int i;  
     float o,minX,maxX;  
     
     o=StrToFloat( Edit6->Text); /*шаг заполнения*/  
     minX=StrToFloat( Edit1->Text);/*считываем минимальное занчение*/  
     maxX=StrToFloat( Edit2->Text);/*максимальное значение*/  
     StringGrid1->Cells[1][1]=minX;  
     StringGrid1->Cells[1][i]=maxX;  
     
    for ( i=2;i<10; i++)  
    {  if (minX<=maxX)  
    StringGrid1->Cells[i][1]=minX+(i-1)*o;  
    
    }
0
IS
13 / 13 / 2
Регистрация: 01.10.2008
Сообщений: 116
01.03.2009, 20:12
Тут дело в формате вывода данных. В паскале чтобы вести нужное кол-во знаков после запятой пишут :1. А в билдере я не помню как надо писать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.03.2009, 20:12
Помогаю со студенческими работами здесь

Как изменять масштаб картинки
Всем привет. Как изменять масштаб картинки в picturebox?

Как узнать какой масштаб в компоненте вебБраузер
У меня динамически создаетсся несколько вкладок, на которых создается WebBrowser. Я могу установить масштаб любого WebBrowser на любой...

Как увеличить\уменьшить масштаб в компоненте chart
Подскажите, как увеличить\уменьшить масштаб в компоненте chart. Имеется в ввиду, при постройке графика при выделении того или инного...

как заставить CrystalReportViewer экспортировать, печатать, искать и изменять масштаб?
У нас есть страница, на ней размещена панель CrystalReportViewer как заставить эту панель экспортировать,печатать,искать и изменять...

Работа с мышью: С помощью клавиш [+] и [-] изменять область движения "мыши"
Всем привет! С мышью еще не работал. помогите пожалуйста написать программу: С помощью клавиш и изменять область движения...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru