Avatar billede milandt Nybegynder
13. oktober 2004 - 10:34 Der er 5 kommentarer og
1 løsning

Borland Builder, Image map / hotspot

Hej

Jeg har et billede - et kort over Danmark - og det vil jeg gerne ha opdelt i flere foreksllige onClick events efter hvor man klikker på det. Ligesom man kan gøre med <MAP> i HTML. Det er ikke alle hptspots der er kvadratiske så at sidde og klippe billedet i småstykker og sætte det ind igen har jeg opgivet :)

Findes der en måde at lave det ligesom <MAP> i Borland C++ Builder ? I så fald, kan nogen henvise til et eksempel?

Dennis
Avatar billede jakobdo Ekspert
13. oktober 2004 - 11:22 #1
Kan du ikke evt bruge denne kode til noget:

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  AnsiString temp;
  Form1->Caption = temp.sprintf("X = %d og Y = %d",X,Y);
}

PÅ din form laver du så dit billede IMAGE, og putter dit billeder derind.

Og så skal du bare bruge X og Y.
Avatar billede jakobdo Ekspert
13. oktober 2004 - 11:47 #2
Eller du kan prøve denne kode:

(hvis du tilføjer et billede - IMAGE kontrol, 4 radiobuttons)

Og så denne kode:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

AnsiString GetShortcutTarget(const AnsiString LinkFileName);
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
  : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
  //Venstre oppe...
  if ((X < 39) && (Y < 39))
  {
    RadioButton1->Checked = true;
  }
  else
  //Højre oppe...
  if ((X > 39) && (Y < 39))
  {
    RadioButton3->Checked = true;
  }
  else
  //Venstre nede...
  if ((X < 39) && (Y > 39))
  {
    RadioButton2->Checked = true;
  }
  else
  //Højre nede...
  if ((X > 39) && (Y > 39))
  {
    RadioButton4->Checked = true;
  }
}
//---------------------------------------------------------------------------


void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
  Form1->Caption = "X = " + AnsiString(X) + " og Y = " + AnsiString(Y);
}
//---------------------------------------------------------------------------
Avatar billede jakobdo Ekspert
13. oktober 2004 - 11:48 #3
PS: Billedet jeg har testet på er 80*80! (det kan laves bedre - læs mere dynamisk)
Avatar billede jakobdo Ekspert
13. oktober 2004 - 20:34 #4
Kan du bruge nogle af mine forslag??
Avatar billede milandt Nybegynder
18. oktober 2004 - 11:48 #5
Hey

Ubdskyld den sene response. Umiddelbart skal jeg bruge områder i mit billede der ikke nødvendigvis er firkantede, og så bliver det et stort arbejde at skulle beregne hvilke pixels der ligger hvor..

ved dit andet forslag er jeg ikke helt med?

Dennis
Avatar billede milandt Nybegynder
03. juni 2005 - 11:32 #6
closung
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester