Avatar billede narrr Nybegynder
31. marts 2004 - 12:35 Der er 2 kommentarer og
1 løsning

vektor og WINAPIs Polygon

Jeg har en vector<CPoint>, som indeholder nogle punkter jeg vil tegne en polygon udfra. ::Polygon-funktionen i WINAPI tager et LPPOINT som argument, men hvordan kan jeg bruge vektoren som argument i denne funktion? Jeg har prøvet nogle forskellige ting med iterators, men det virker ikke rigtig :(.. Min løsning lige nu er at kopiere vektoren over i et almindeligt array, men det synes jeg ikke er en særlig god løsning.
Avatar billede kamikaze Nybegynder
03. april 2004 - 22:42 #1
Er det flg. kald der er 'Polygon-funktionen':

BOOL Polygon(
  HDC hdc,                // handle to device context
  CONST POINT *lpPoints,  // pointer to polygon's vertices
  int nCount              // count of polygon's vertices
);

???

Hvis ja, ser du ud til at du kan kalde den som flg.:

std::vector<LPPOINT> pointList;
...// fill pointList
LPPOINT pointArray[pointList.size()];
std::vector<LPPOINT>::iterator itr = pointList.begin();
int nCount = 0;
while( itr != pointList.end() )
{
  pointArray[nCount] = (*itr);
  ++itr;
  ++nCount;
}

Polygon(hdc, pointArray, pointList.size() );
Avatar billede narrr Nybegynder
04. april 2004 - 14:58 #2
Ja, lige nu bruger jeg også en løsning, hvor jeg kopierer vectorens data over i en anden vector, som jeg så kan bruge direkte.

Der er nogle problemer med din kode.

1. std::vector<LPPOINT> pointList; <- En vector som indeholder pointere til punkter, hvor skal de rigtige punkter så opbevares?

2. LPPOINT pointArray[pointList.size()]; <- Sådan kan man ikke initializere et array. Størrelsen skal være kendt på forhånd. Man er nødt til at bruge new/delete.
Avatar billede kamikaze Nybegynder
04. april 2004 - 15:22 #3
1) De kunne fx. opbevares på heapen. Kender jo ikke din kode.
2) Korrekt. Det var et hurtigt eksempel :o)

Ser lige at du brugte std::vector<CPoint> - her vil de jo så være allokeret, og kan (som du vist også gør) kopieres til et array. Læste ikke dit spm. grundigt nok.
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