Не удается преобразовать struct ** в const POINT * для аргумента? - PullRequest
2 голосов
/ 30 августа 2010

Привет всем, я использую winapi, и я хочу сделать квадрат в 3d. Я определяю точки, чтобы объединить их с помощью функции, и я пробовал 3 функции, но я не могу заставить их работать. . <</p>

Ошибка говорит

In member function `void Cube::Show(void)':|
    cannot convert `const Cube::Show()::POINT3D**' to `const POINT*' 
    for argument `2' to `BOOL Polygon(HDC__*, const POINT*, int)'|

Ошибка указывает, когда я использую либо функцию Polygon, либо polybezier, либо polyline

Plz Любая помощь будет принята с благодарностью

void Cube::Show(void)
{
    typedef struct point3d
    {
       double x;
       double y;
       double z;
    } POINT3D;

    POINT3D Face1[] = {
   { 20.0,-20.0,-20.0},
   {-20.0,-20.0,-20.0},
   {-20.0, 20.0,-20.0},
   { 20.0, 20.0,-20.0}
    };
    POINT3D Face2[] = {
   {-20.0,-20.0,-20.0},
   {-20.0,-20.0, 20.0},
   {-20.0, 20.0, 20.0},
   {-20.0, 20.0,-20.0}
    };
    POINT3D Face3[] = {
   { 20.0, 20.0, 20.0},
   {-20.0, 20.0, 20.0},
   {-20.0,-20.0, 20.0},
   { 20.0,-20.0, 20.0}
    };
    POINT3D Face4[] = {
   { 20.0,-20.0, 20.0},
   { 20.0,-20.0,-20.0},
   { 20.0, 20.0,-20.0},
   { 20.0, 20.0, 20.0}
    };
    POINT3D Face5[] = {
   { 20.0,-20.0, 20.0},
   {-20.0,-20.0, 20.0},
   {-20.0,-20.0,-20.0},
   { 20.0,-20.0,-20.0}
    };
    POINT3D Face6[] = {
   { 20.0, 20.0,-20.0},
   {-20.0, 20.0,-20.0},
   {-20.0, 20.0, 20.0},
   { 20.0, 20.0, 20.0}
    };

    POINT3D *Faces[] = {Face1,Face2,Face3,Face4,Face5,Face6};
 Rectangle(this->_hdc,this->DrawArea.left,this->DrawArea.top,this->DrawArea.right,this->DrawArea.bottom);

    Polygon(_hdc,Faces,6);
    /*BeginPath(_hdc);
    PolyBezier(Faces,6);
    EndPath(_hdc);*/
    //Polyline(_hdc,Faces,6);
}

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

Вы передаете в своей версии POINT POINT3D, а не POINT из глобального пространства имен.Из конструкций одинаковые только что отлиты.Кроме того, вы передаете массив массивов, а не один массив.

Поэтому я предлагаю вам пересмотреть API, чтобы увидеть, что ему нужно - что-то вроде

Polygon(_hdc,((POINT *) (Faces[0])),6) perhaps
0 голосов
/ 30 августа 2010

Polygon и другие функции, которые вы пробуете, являются функциями 2D GDI.Они действительно не были предназначены для представления 3D-графики.Конечно, можно получить желаемый эффект с помощью GDI, но это своего рода неправильный инструмент, если вы собираетесь делать много 3D-работы, которая выглядит как вы.DirectX или какой-либо другой фреймворк, предназначенный для работы с 3D-изображениями.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...