C++ vraagje

Status
Niet open voor verdere reacties.

PinoyNL

Gebruiker
Lid geworden
24 okt 2006
Berichten
17
Hallo,

Ik ben een aantal maanden bezig met c++ en begin nu met het maken van een GUI.

Ik heb op een form een image, als ik daar met mijn muis overheen ga dan worden de x en de y coordinaten in een textbox weergegeven. Hoe doe ik dat? met een OnMouseMove Event op Image1?

Alvast bedankt.

Groeten
PinoyNL
 
welke manier heb je gebruik op een GUI te maken?

GEbruik je Qt, recource file, pure win32?
 
Hoi NLScotty,

Ik heb het al opgelost, maar nu krijg ik de screen pixels als output, maar niet de pixels van het image...

Code:
struct point {int x; int y;};

POINT pos;
GetCursorPos(&pos);
this->Edit1->Text = (pos.x);
this->Edit2->Text = (pos.y);
 
In Edit1 en Edit2 staan nu de coordinaten van de mouse pointer, maar....die zijn niet relatief naar de grootte van Image1.

Als ik bijv. naar het punt waar coordinaat (0,0) zou moeten staan (links bovenaan Image1), dan worden de absoluten coordinaten van het gehele scherm getoond.
 
Ik loop nu tegen een volgend probleem aan.

Het programma is als volgt:
ik klik met de muis op een bepaalde locatie op een image, deze locatie wordt opgeslagen in een x vector en een y vector met behulp van een record button.

met een tweede button play kunnen de opgeslagen muis locaties worden weergegeven op het scherm in de vorm van een cirkeltje. Ik krijg alleen dat cirkeltje niet op het scherm. Welke coordinaten voor ellipse moet ik gebruiken?

hier is de code:
Code:
//---------------------------------------------------------------------------

#include <vcl.h>
#include <vector>
#include <time.h>
#pragma hdrstop

#include "test.h"
using namespace std;

vector<int> x;
vector<int> y;

int i = 0;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
        struct point {int X; int Y;};

        POINT pos;
        GetCursorPos(&pos);
        this->Edit1->Text = (pos.x);
        this->Edit2->Text = (pos.y);

}

void __fastcall TForm1::buttonQuitClick(TObject *Sender)
{
        this->Close();
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1Click(TObject *Sender)
{
        while(CheckBox1->Checked == true)
        {
          CheckBox1->Checked = false;
        }

        if(buttonPlay->Enabled == false)
        {
           x.push_back(this->Edit1->Text.ToInt());
           y.push_back(this->Edit2->Text.ToInt());
           Edit3->Text = x.size();
           Edit4->Text = x.capacity();
        }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::buttonReverseClick(TObject *Sender)
{
        vector<int> xhulp;
        vector<int> yhulp;
        int count = x.size();

        if (!(count <= 0))
        {
           count -= 1;
           for (int index = 0; (index < x.size()) && (count >= 0); index++)
           {
              xhulp.push_back(x.at(count));
              yhulp.push_back(y.at(count));
              count--;
           }
        x = xhulp;
        y = yhulp;
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::buttonAllClick(TObject *Sender)
{
        x.clear();
        y.clear();

        if (x.empty() && y.empty())
        {
           Edit3->Text = x.size();
           Edit4->Text = y.size();
           CheckBox1->Checked = true;
        }
}
//---------------------------------------------------------------------------

void __fastcall TForm1::buttonRemoveClick(TObject *Sender)
{
        if (!(x.empty()) && !(y.empty()))
        {
           x.pop_back();
           y.pop_back();
           Edit3->Text = x.size();
        }
        else
        {
           Edit3->Text = x.size();
           Edit4->Text = y.size();
           CheckBox1->Checked = true;
        }
}

void __fastcall TForm1::buttonRecordClick(TObject *Sender)
{
        if(buttonRecord->Caption == "record")
        {
            buttonRecord->Caption = "stop";
            buttonPlay->Enabled = false;
        }
        else
        {
           buttonRecord->Caption = "record";
           buttonPlay->Enabled = true;
        }

}
//---------------------------------------------------------------------------

void __fastcall TForm1::buttonPlayClick(TObject *Sender)
{
        Timer1->Enabled = true;
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
        int c;

        if(Timer1->Enabled == true)
        {
           c = x.size();
           this->Image1->Canvas->Brush->Color = clRed;
           this->Canvas->Ellipse(10, 10, 10, 10);
           this->ProgressBar1->StepBy(c);
           i++;
        }
}
//---------------------------------------------------------------------------
 
Laatst bewerkt:
Ik heb het al opgelost. Iemand geïnteresseerd in de code?

groeten
PinoyNL
 
[CPP]
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
int c;
c = x.size();

if(Timer1->Enabled == true && i < x.size())
{
this->Timer1->Interval = 1000 - (this->TrackBar1->Position * 100);
this->Image1->Canvas->Brush->Color = clRed;
this->Image1->Canvas->Ellipse(x + 25, y + 25, x, y);
this->ProgressBar1->StepBy(100.0 / c);
i++;
}
else
{
this->Timer1->Enabled = false;
}
}
[/CPP]
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan