GdiTest.Win32GDI.MoveToEx C# (CSharp) Méthode

MoveToEx() public méthode

public MoveToEx ( IntPtr hdc, int X, int Y, IntPtr lpPoint ) : bool
hdc System.IntPtr
X int
Y int
lpPoint System.IntPtr
Résultat bool
        public override bool MoveToEx(IntPtr hdc, int X, int Y, IntPtr lpPoint)
        {
            if (available)
                return Callbacks.MoveToEx(hdc, X, Y, lpPoint);
            else
                return false;
        }

Usage Example

        protected override bool OnExposeEvent(Gdk.EventExpose args)
        {
            using (Context g = Gdk.CairoHelper.Create(args.Window))
            {
                g.LineWidth = 1;
                g.Antialias = Antialias.None;

                Win32GDI GDI_Win32 = Win32GDI.getInstance();

                if (GDI_Win32.isAvailable())
                {
                    System.Drawing.Graphics wg = Gtk.DotNet.Graphics.FromDrawable(this.GdkWindow, true);
                    IntPtr hdc = wg.GetHdc();

                    int i = 0;
                    int n = 10;
                    int w = 16;
                    int h = 16;

                    Area[]  areas  = new Area[n];
                    Point[] startp = new Point[n];
                    Point[] endp   = new Point[n];

                    /* Test Case 1 */
                    areas[i].X  = 0;
                    areas[i].Y  = 0;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X;
                    startp[i].Y = areas[i].Y;
                    endp[i].X   = areas[i].X + w;
                    endp[i].Y   = areas[i].Y + h;
                    i++;

                    /* Test Case 2 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + w;
                    startp[i].Y = areas[i].Y + h;
                    endp[i].X   = areas[i].X;
                    endp[i].Y   = areas[i].Y;
                    i++;

                    /* Test Case 3 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + w;
                    startp[i].Y = areas[i].Y;
                    endp[i].X   = areas[i].X;
                    endp[i].Y   = areas[i].Y + h;
                    i++;

                    /* Test Case 4 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X;
                    startp[i].Y = areas[i].Y + h;
                    endp[i].X   = areas[i].X + w;
                    endp[i].Y   = areas[i].Y;
                    i++;

                    /* Test Case 5 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X;
                    startp[i].Y = areas[i].Y + (h / 2);
                    endp[i].X   = areas[i].X + w;
                    endp[i].Y   = areas[i].Y + (h / 2);
                    i++;

                    /* Test Case 6 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + w;
                    startp[i].Y = areas[i].Y + (h / 2);
                    endp[i].X   = areas[i].X;
                    endp[i].Y   = areas[i].Y + (h / 2);
                    i++;

                    /* Test Case 7 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + (w / 2);
                    startp[i].Y = areas[i].Y;
                    endp[i].X   = areas[i].X + (w / 2);
                    endp[i].Y   = areas[i].Y + h;
                    i++;

                    /* Test Case 8 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + (w / 2);
                    startp[i].Y = areas[i].Y + h;
                    endp[i].X   = areas[i].X + (w / 2);
                    endp[i].Y   = areas[i].Y;
                    i++;

                    /* Test Case 9 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + (w / 4);
                    startp[i].Y = areas[i].Y + (h / 4);
                    endp[i].X   = areas[i].X + 3 * (w / 4);
                    endp[i].Y   = areas[i].Y + 3 * (h / 4);
                    i++;

                    /* Test Case 10 */
                    areas[i].X  = areas[i - 1].X + areas[i - 1].W;
                    areas[i].Y  = areas[i - 1].Y;
                    areas[i].W  = w;
                    areas[i].H  = h;
                    startp[i].X = areas[i].X + 3 * (w / 4);
                    startp[i].Y = areas[i].Y + (h / 4);
                    endp[i].X   = areas[i].X + (w / 4);
                    endp[i].Y   = areas[i].Y + 3 * (h / 4);
                    i++;

                    for (i = 0; i < n; i++)
                    {
                        if (!rendered)
                        {
                            /* Fill Area with White */
                            g.Color = new Color(255, 255, 255);
                            Rectangle rect = new Rectangle(areas[i].X, areas[i].Y, areas[i].W, areas[i].H);
                            g.Rectangle(rect);
                            g.Fill();
                            g.Stroke();
                        }

                        /* Render Test Case */
                        IntPtr pen    = GDI_Win32.CreatePen(1, 1, 0);
                        IntPtr oldPen = GDI_Win32.SelectObject(hdc, pen);
                        GDI_Win32.MoveToEx(hdc, startp[i].X, startp[i].Y, IntPtr.Zero);
                        GDI_Win32.LineTo(hdc, endp[i].X, endp[i].Y);

                        dumpText += "unsigned char line_to_case_" + (i + 1) + "[" + areas[i].W * areas[i].H + "] = \n";
                        dumpText += dumpPixelArea(GDI_Win32, hdc, areas[i].X, areas[i].Y, areas[i].W, areas[i].H) + "\n";
                    }
                }
            }

            return(true);
        }
All Usage Examples Of GdiTest.Win32GDI::MoveToEx