Ein Bild laden, dann verschiedene Bereich anklicken nur wie?????
-
Hallo Jungs
ich habe ein kleines Problem. Ich lade ein BMP mit 100 Rechtecken auf dem Bild. Zudem weiß ich von jedem Rechteck den Namen und die Größe. Wie ist es möglich das ich ein Recheckt auf dem Bild anklicken kann? Habe schon soetwas angedacht. Über das Rechteck lege ich einfach eine Checkbox mit irgend einen Namen. Nur wie kann ich so etwas in ein Bild zeichenen da es dynamisch sein muss. Habt ihr eine Idea??? Bitte mit einem Bsp: Oder wie geht es einfacher
Danke bumbumb
-
Hmm, wenn du schon ein invisible Control über alle Rechtecke legen willst, dann lege lieber einen Button mit der gleichen Größe wie die Rechtecke auf die Rechtecke. (hehe komischer Satz
)
Und, ich weiss ja nicht was du machen willst, aber du kannst ja dann eine allgemeine Funktion für alle Buttons anlegen, sodas jeder Button gleich Reagiert. Also z.B. eine Messagebox ausibt...
Cheers
Work That
-
ja das habe ich vor aber wie bekomme ich das mit den Buttons hin? Wie lege ich sie an die entsprechenden koordinaten fest. Bitte gebe mir bescheid
-
Noch eine Möglichkeit:
Die Message OnLButtonDown einbauen. Die hat die Koordinaten, wo geklickt wurde, schon als Übergabeparameter (als CPoint). Der Rest ist Mathematik.
-
kannst du mir ein Bsp geben bin newbie
-
Irgendwo in der Headerdatei deiner Klasse steht sowas:
//}}AFX_MSG DECLARE_MESSAGE_MAP()
Davor schreibst du das hin:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
Und irgendwo am Anfang deiner entsprechenden cpp-Datei steht sowas:
BEGIN_MESSAGE_MAP(CNameDeinerKlasseDlg, CDialog) //{{AFX_MSG_MAP(CNameDeinerKlasseDlg)
Danach schreibst du das hin:
ON_WM_LBUTTONDOWN()
Und an das Ende dieser Klasse kommt das:
void CNameDeinerKlasseDlg::OnLButtonDown(UINT nFlags, CPoint point) { CDialog::OnLButtonDown(nFlags, point); }
...und in point sind die Koordinaten des Klicks als int drin.
-
so lade ich das Bild
CWnd* pWnd = (CWnd*) GetDlgItem(IDC_STATIC_BILD);
CDC* pDC = pWnd->GetDC();
CBitmap bitmap;
CDC dc;
CRect rect;
pWnd->GetClientRect(rect);
BITMAP bm;
HBITMAP hPixel = (HBITMAP)::LoadImage(AfxGetInstanceHandle(),pfad, IMAGE_BITMAP, 0,0, LR_LOADFROMFILE | LR_CREATEDIBSECTION);
bitmap.Attach(hPixel);
bitmap.GetBitmap(&bm);
dc.CreateCompatibleDC(pDC);
dc.SelectObject(bitmap);
pDC->StretchBlt(0,0,rect.Width(), rect.Height(),&dc,0,0, bm.bmWidth, bm.bmHeight, SRCCOPY);
im Bild ist an der Stelle x=123,y450,h=15,b=15 ein Rechteck gezeichnet wie bekomme ich exakt an dieser Stelle ein Rechteck hin? Danke
-
und so das Rechteck warum passt der Button nicht richtig
dc.FillSolidRect(q-g,u-z,wh,hw,RGB(255,zahl2,zahl3));
GetDlgItem(IDC_BUTTON11)->SetWindowPos(NULL, q-g,u-z,wh,hw, NULL);
-
wie bekomme ich es hin das in point die x und y werte getrennt in eine Variable kopieren kann?
Help
-
int x = point.x; int y = point.y;