Constructor of array of Point



  • german or english, which language do you prefer 🙂 ?

    Actually, you don't need an multidimensional array here if you only want to pass it to the Matrix constructor. You just add three Points to the array like this:

    cli::array<System::Drawing::Point^>^ plgpts; // no dimension means single-dimension
    plgpts = gcnew cli::array<System::Drawing::Point^>(3); // 3 for 3 Points
    
    // define Points
    System::Drawing::Point^ pt1; 
    System::Drawing::Point^ pt2; 
    System::Drawing::Point^ pt3; 
    pt1=gcnew System::Drawing::Point::Point(0,0); 
    pt2=gcnew System::Drawing::Point::Point(0,2048); 
    pt3=gcnew System::Drawing::Point::Point(1536,2048); 
    
    // add them to the array
    plgpts[0] = pt1;
    plgpts[1] = pt2;
    plgpts[2] = pt3;
    

    or:

    cli::array<System::Drawing::Point^>^ plgpts = gcnew cli::array<System::Drawing::Point^>{pt1, pt2, pt3};
    

    or:

    cli::array<System::Drawing::Point^>^ plgpts = {pt1, pt2, pt3};
    

    with kind regards,

    Probe-Nutzer



  • ich weiß ein bisschen Deutsch aber nicht genug um technische Sachen zu sprechen, jjeje!!

    I have proved your suggestions and all of them have the same problem:

    error C2059: syntax error : ';'

    3 times, one for each of those lines

    pt1=gcnew (System::Drawing::Point::Point(0,0));
    	pt2=gcnew (System::Drawing::Point::Point(0,2048));
    	pt3=gcnew (System::Drawing::Point::Point(1536,2048));
    

    and too
    Error C2665: 'System::Drawing::Drawing2D::Matrix::Matrix' : none of the 6 overloads could convert all the argument types

    in

    L=gcnew( System::Drawing::Drawing2D::Matrix::Matrix(rect,plgpts));
    

    but I supposed that it comes from the error of the points.



  • my mistake, try it like this:

    // omit one ::Point in all of the Point definitions
    pt1=gcnew System::Drawing::Point(0,0);
    ...
    

    the same with Matrix:

    L=gcnew System::Drawing::Drawing2D::Matrix(rect,plgpts);
    

    with kind regards,

    Probe-Nutzer



  • I have made these changes and now I have got another error but I don't understand why, it says something about RectangleF and I am not using it. If I change my Rectangle into RectangleF there is also another error.

    System::Drawing::Rectangle^ rect;
            System::Drawing::Bitmap^ img;
    	img=gcnew System::Drawing::Bitmap(image);
    	int nc=img->Width;
    	int nr=img->Height;
            rect=System::Drawing::Rectangle(0, 0, nc, nr);
    
            L=gcnew System::Drawing::Drawing2D::Matrix(rect,plgpts);
    

    error C2664: 'System::Drawing::Drawing2D::Matrix::Matrix(System::Drawing::RectangleF,cli::array<Type,dimension> ^)' : cannot convert parameter 1 from 'System::Drawing::Rectangle ^' to 'System::Drawing::RectangleF'

    if I declare it as RectangleF this is the error (the same as before)

    error C2664: 'System::Drawing::Drawing2D::Matrix::Matrix(System::Drawing::RectangleF,cli::array<Type,dimension> ^)' : cannot convert parameter 1 from 'System::Drawing::RectangleF ^' to 'System::Drawing::RectangleF'



  • both of the System::Drawing::Drawing2D::Matrix constructors with Rectangle(F) arguments expect a value type as first argument. Look at the declaration:

    public:
    Matrix (
    	Rectangle rect, 
    	array<Point>^ plgpts
    )
    

    There's no "^" next to Rectangle, therefore:

    System::Drawing::Rectangle rect;
    

    is the right way to declare the rect.

    with kind regards,

    Probe-Nutzer



  • System::Drawing::Drawing2D::Matrix^ L;
    	System::Drawing::Rectangle rect;
            cli::array<System::Drawing::Point^>^ plgpts; 
    	plgpts = gcnew cli::array<System::Drawing::Point^>(3); // 3 for 3 Points
    
    	System::Drawing::Point^ pt1;
    	System::Drawing::Point^ pt2;
    	System::Drawing::Point^ pt3;
    
    	pt1=gcnew System::Drawing::Point(0,0);
    	pt2=gcnew System::Drawing::Point(0,2048);
    	pt3=gcnew System::Drawing::Point(2048,1536);
    
    	plgpts[0] = pt1;
    	plgpts[1] = pt2;
    	plgpts[2] = pt3;
    
    	System::Drawing::Bitmap^ img;
    
    	img=gcnew System::Drawing::Bitmap(image);
    	int nc=img->Width;
    	int nr=img->Height;
    	rect=System::Drawing::Rectangle(0, 0, nc, nr);
    
    	L=gcnew System::Drawing::Drawing2D::Matrix(rect,plgpts);
    

    this is what I have until now. Now that there is no problem in the first parameter there is another one with the second one. Puff!!it has no end

    error C2664: 'System::Drawing::Drawing2D::Matrix::Matrix(System::Drawing::RectangleF,cli::array<Type,dimension> ^)' : cannot convert parameter 2 from 'cli::array<Type> ^' to 'cli::array<Type,dimension> ^'



  • yet another change:

    System::Drawing::Drawing2D::Matrix^ L;
        System::Drawing::Rectangle rect;
            cli::array<System::Drawing::Point>^ plgpts; 
        plgpts = gcnew cli::array<System::Drawing::Point>(3); // 3 for 3 Points
    
        System::Drawing::Point pt1;
        System::Drawing::Point pt2;
        System::Drawing::Point pt3;
    
        pt1=System::Drawing::Point(0,0);
        pt2=System::Drawing::Point(0,2048);
        pt3=System::Drawing::Point(2048,1536);
    
        plgpts[0] = pt1;
        plgpts[1] = pt2;
        plgpts[2] = pt3;
    
        System::Drawing::Bitmap^ img;
    
        img=gcnew System::Drawing::Bitmap(image);
        int nc=img->Width;
        int nr=img->Height;
        rect=System::Drawing::Rectangle(0, 0, nc, nr);
    
        L=gcnew System::Drawing::Drawing2D::Matrix(rect,plgpts);
    

    with kind regards,

    Probe-Nutzer



  • puff!!it's unbelievable that nothing works. Now the errors are in the points

    error C2440: '=' : cannot convert from 'System::Drawing::Point ^' to 'System::Drawing::Point'

    The constructor of Matrix in the second parameter needs this
    cli::arraySystem::Drawing::Point,1^plgpts

    maybe there is something wrong with that 1, or we don't need Point to be Point^ but if I try there's the error of above.



  • change the array's initialization:

    cli::array<System::Drawing::Point>^ plgpts = gcnew cli::array<System::Drawing::Point>{System::Drawing::Point(0,0), System::Drawing::Point(0,2048), System::Drawing::Point(2048,1536)};
    

    then the following lines:

    plgpts = gcnew cli::array<System::Drawing::Point>(3); // 3 for 3 Points
    
        System::Drawing::Point pt1;
        System::Drawing::Point pt2;
        System::Drawing::Point pt3;
    
        pt1=System::Drawing::Point(0,0);
        pt2=System::Drawing::Point(0,2048);
        pt3=System::Drawing::Point(2048,1536);
    
        plgpts[0] = pt1;
        plgpts[1] = pt2;
        plgpts[2] = pt3;
    

    can be removed.

    with kind regards,

    Probe-Nutzer



  • wunderbaaaar!!!

    IT WORKS!!!!!
    Thank you so much for your help and dedication!!


Anmelden zum Antworten