/ Forside/ Teknologi / Udvikling / C/C++ / Spørgsmål
Login
Glemt dit kodeord?
Brugernavn 

Kodeord  


Reklame
Top 10 brugere
C/C++
#NavnPoint
BertelBra.. 2425
pmbruun 695
Master_of.. 501
jdjespers.. 500
kyllekylle 500
Bech_bb 500
scootergr.. 300
gibson 300
molokyle 287
10  strarup 270
se om icon er i rect område
Fra : glenn007
Vist : 322 gange
100 point
Dato : 01-05-03 02:24

Hvorledes kan man finde ud af om ens icon er inde for et rect[x][y].

 
 
Accepteret svar
Fra : BertelBrander

Modtaget 100 point
Dato : 01-05-03 23:25

Ved at checke om icon'ets rect er inden for rect'en?
F.eks (advarsel, ikke testet kode følger):

RECT icon_rect = whatever(), rect = something();
if(icon_rect.left >= rect.left && icon_rect.top >= rect.top && icon_rect.right <= rect.right && icon_rect.bottom <= rect.bottom)
icon_er_inden_for_rect();

Hvis det ikke lige var det du var ude efter bedes du forklare nærmere.

Kommentar
Fra : glenn007


Dato : 01-05-03 23:47

jeg tror nok det er det du der har fat i jeg skal bruge.
Jeg vil lige for en god ordens skyld prøve at forklere mig nærmere.

Jeg har lavet et grid således.
//***********************

CDC* pdc = m_st1.GetWindowDC();
CClientDC dc(this);

//GetWindowRect( &rectStaticClient );
CRect Rectgrid[10][10];
if(pdc==NULL)
{
         AfxMessageBox( "pdc null" );
}

else

m_pt.x = rectStaticClient.left;
m_pt.y = rectStaticClient.top;

   CScrollBitmapDlg* pDoc = this;

   // Major unit lines
   CPen penDash;
   penDash.CreatePen(PS_SOLID, 1, m_gridColor);
   CPen* pOldPen = pDC->SelectObject(&penDash);






for (int x = 0-sourcex; x < rect.right; x += rect.right/10)
{
for(int i=0; i<10; ++i)
{
Rectgrid[i][0].left = x;
Rectgrid[i][0].right = x + rect.right/10;
}

if (x != 0)

{
pDC->MoveTo(x, rect.top);
pDC->LineTo(x, rect.bottom);

}
}

for (int y = 0-sourcey; y < rect.bottom; y += rect.bottom/10)
{
for(int i=0; i<10; ++i)
{
Rectgrid[0][i].top = y;
Rectgrid[0][i].bottom = y + rect.bottom/10;
         
         
}

if (y != 0)
{
pDC->MoveTo(rect.left, y);
pDC->LineTo(rect.right, y);

}
      
   if(Rectgrid[5][5].PtInRect(point))

   // start point in rect klamme
   {
   
   FillRect(dc,&Rectgrid[10][10],(HBRUSH)GetStockObject(BLACK_BRUSH));
   }
   // slut point in rect rectsingrid
      
    };

   pDC->SelectObject(pOldPen);



//****************

Og det jeg så søger er at den skal fortælle mig hvilket Rectgrid icon befinder sig i.
Således at hvis iconet er i det først rect der er lavet så sætter den en edit boks værdi til 1 og næste 2 osv.



Kommentar
Fra : BertelBrander


Dato : 02-05-03 01:05

1: Jeg ved intet om Grids.
2: Du mangler en { efter den første else i ovenstående.
3: Man kan ikke tage addressen på Rectgrid[10][10], hvis Rectgrid er erklæret som det er i koden ovenfor.
4: Hvis rect'et for Iconet er erklæret som: "CRect IconRect;" kan man bruge følgende (som vanlig er jeg for doven til at teste koden):

int i, j;
CPoint ptl = IconRect.TopLeft();
CPoint pbr = IconRect.BottomRight();

for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
if(Rectgrid[i][j].PtInRect(ptl) && Rectgrid[i][j].PtInRect(pbr))
{
IconIsInRectGrid(i, j);
}
}
}

Godkendelse af svar
Fra : glenn007


Dato : 15-05-03 19:01

Tak for svaret BertelBrander.
                        

Du har følgende muligheder
Eftersom du ikke er logget ind i systemet, kan du ikke skrive et indlæg til dette spørgsmål.

Hvis du ikke allerede er registreret, kan du gratis blive medlem, ved at trykke på "Bliv medlem" ude i menuen.
Søg
Reklame
Statistik
Spørgsmål : 176905
Tips : 31930
Nyheder : 719565
Indlæg : 6404551
Brugere : 218793

Månedens bedste
Årets bedste
Sidste års bedste