亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? gdipluspen.h

?? 一個很強悍的爬行蜘蛛,能用于很多網頁,而且速度也快
?? H
字號:
/**************************************************************************\
* 
* Copyright (c) 1998-2000, Microsoft Corp.  All Rights Reserved.
*
* Module Name:
*
*   GdiplusPen.h
*
* Abstract:
*
*   Pen API related declarations
*
\**************************************************************************/
#ifndef _GDIPLUSPEN_H
#define _GDIPLUSPEN_H

//--------------------------------------------------------------------------
// class for various pen types
//--------------------------------------------------------------------------

class Pen : public GdiplusBase
{
public:
    friend class GraphicsPath;
    friend class Graphics;

    // abstract Clone() can't be implemented here because it can't
    // new an object with pure virtual functions

    // Constructors

    Pen(IN const Color& color, 
        IN REAL width = 1.0f)
    {
        Unit unit = UnitWorld;
        nativePen = NULL;
        lastResult = DllExports::GdipCreatePen1(color.GetValue(),
                                    width, unit, &nativePen);
    }

    Pen(IN const Brush* brush, 
        IN REAL width = 1.0f)
    {
        Unit unit = UnitWorld;
        nativePen = NULL;
        lastResult = DllExports::GdipCreatePen2(brush->nativeBrush,
                                    width, unit, &nativePen);
    }

    ~Pen()
    {
        DllExports::GdipDeletePen(nativePen);
    }

    Pen* Clone() const
    {
        GpPen *clonePen = NULL;

        lastResult = DllExports::GdipClonePen(nativePen, &clonePen);
   
        return new Pen(clonePen, lastResult);
    }

    Status SetWidth(IN REAL width)
    {
        return SetStatus(DllExports::GdipSetPenWidth(nativePen, width));
    }

    REAL GetWidth() const
    {
        REAL width;

        SetStatus(DllExports::GdipGetPenWidth(nativePen, &width));
        
        return width;
    }
    
    // Set/get line caps: start, end, and dash

    // Line cap and join APIs by using LineCap and LineJoin enums.

    #ifdef DCR_USE_NEW_197819
    Status SetLineCap(IN LineCap startCap, 
                      IN LineCap endCap, 
                      IN DashCap dashCap)
    {
        return SetStatus(DllExports::GdipSetPenLineCap197819(nativePen, 
                                   startCap, endCap, dashCap));
    }
    #else
    Status SetLineCap(IN LineCap startCap, 
                      IN LineCap endCap, 
                      IN LineCap dashCap)
    {
        return SetStatus(DllExports::GdipSetPenLineCap(nativePen, 
                                   startCap, endCap, dashCap));
    }
    #endif // DCR_USE_NEW_197819

    Status SetStartCap(IN LineCap startCap)
    {
        return SetStatus(DllExports::GdipSetPenStartCap(nativePen, startCap));
    }

    Status SetEndCap(IN LineCap endCap)
    {
        return SetStatus(DllExports::GdipSetPenEndCap(nativePen, endCap));
    }

    #ifdef DCR_USE_NEW_197819
    Status SetDashCap(IN DashCap dashCap)
    {
        return SetStatus(DllExports::GdipSetPenDashCap197819(nativePen,
                                   dashCap));
    }
    #else
    Status SetDashCap(IN LineCap dashCap)
    {
        return SetStatus(DllExports::GdipSetPenDashCap(nativePen, dashCap));
    }
    #endif // DCR_USE_NEW_197819

    LineCap GetStartCap() const
    {
        LineCap startCap;

        SetStatus(DllExports::GdipGetPenStartCap(nativePen, &startCap));
        
        return startCap;
    }

    LineCap GetEndCap() const
    {
        LineCap endCap;

        SetStatus(DllExports::GdipGetPenEndCap(nativePen, &endCap));

        return endCap;
    }

    #ifdef DCR_USE_NEW_197819
    DashCap GetDashCap() const
    {
        DashCap dashCap;

        SetStatus(DllExports::GdipGetPenDashCap197819(nativePen,
                            &dashCap));

        return dashCap;
    }
    #else
    LineCap GetDashCap() const
    {
        LineCap dashCap;

        SetStatus(DllExports::GdipGetPenDashCap(nativePen, &dashCap));

        return dashCap;
    }
    #endif // DCR_USE_NEW_197819


    // Set/get line join

    Status SetLineJoin(IN LineJoin lineJoin)
    {
        return SetStatus(DllExports::GdipSetPenLineJoin(nativePen, lineJoin));
    }

    LineJoin GetLineJoin() const
    {
        LineJoin lineJoin;
        
        SetStatus(DllExports::GdipGetPenLineJoin(nativePen, &lineJoin));
        
        return lineJoin;
    }

    Status SetCustomStartCap(IN const CustomLineCap* customCap)
    {
        GpCustomLineCap* nativeCap = NULL;
        if(customCap)
            nativeCap = customCap->nativeCap;

        return SetStatus(DllExports::GdipSetPenCustomStartCap(nativePen, nativeCap));
    }

    Status GetCustomStartCap(OUT CustomLineCap* customCap) const
    {
        if(!customCap)
            return SetStatus(InvalidParameter);

        return SetStatus(DllExports::GdipGetPenCustomStartCap(nativePen, &(customCap->nativeCap)));
    }

    Status SetCustomEndCap(IN const CustomLineCap* customCap)
    {
        GpCustomLineCap* nativeCap = NULL;
        if(customCap)
            nativeCap = customCap->nativeCap;

        return SetStatus(DllExports::GdipSetPenCustomEndCap(nativePen, nativeCap));
    }

    Status GetCustomEndCap(OUT CustomLineCap* customCap) const
    {
        if(!customCap)
            return SetStatus(InvalidParameter);

        return SetStatus(DllExports::GdipGetPenCustomEndCap(nativePen, &(customCap->nativeCap)));
    }

    Status SetMiterLimit(IN REAL miterLimit)
    {
        return SetStatus(DllExports::GdipSetPenMiterLimit(nativePen, miterLimit));
    }

    REAL GetMiterLimit() const
    {
        REAL miterLimit;

        SetStatus(DllExports::GdipGetPenMiterLimit(nativePen, &miterLimit));

        return miterLimit;
    }

    // Set/get pen mode
    Status SetAlignment(IN PenAlignment penAlignment)
    {
        return SetStatus(DllExports::GdipSetPenMode(nativePen, penAlignment));
    }

    PenAlignment GetAlignment() const
    {
        PenAlignment penAlignment;
        
        SetStatus(DllExports::GdipGetPenMode(nativePen, &penAlignment));
        
        return penAlignment;
    }
    
    // Set/get pen transform
    Status SetTransform(IN const Matrix* matrix)
    {
        return SetStatus(DllExports::GdipSetPenTransform(nativePen, 
                                                         matrix->nativeMatrix));
    }

    Status GetTransform(OUT Matrix* matrix) const
    {
        return SetStatus(DllExports::GdipGetPenTransform(nativePen, matrix->nativeMatrix));
    }

    Status ResetTransform()
    {
        return SetStatus(DllExports::GdipResetPenTransform(nativePen));
    }

    Status MultiplyTransform(IN const Matrix* matrix,
                             IN MatrixOrder order = MatrixOrderPrepend)
    {
        return SetStatus(DllExports::GdipMultiplyPenTransform(nativePen,
                                                              matrix->nativeMatrix,
                                                              order));
    }

    Status TranslateTransform(IN REAL dx, 
                              IN REAL dy,
                              IN MatrixOrder order = MatrixOrderPrepend)
    {
        return SetStatus(DllExports::GdipTranslatePenTransform(nativePen,
                                                               dx, dy, order));
    }

    Status ScaleTransform(IN REAL sx, 
                          IN REAL sy,
                          IN MatrixOrder order = MatrixOrderPrepend)
    {
        return SetStatus(DllExports::GdipScalePenTransform(nativePen,
                                                             sx, sy, order));
    }

    Status RotateTransform(IN REAL angle, 
                           IN MatrixOrder order = MatrixOrderPrepend)
    {
        return SetStatus(DllExports::GdipRotatePenTransform(nativePen,
                                                              angle, order));
    }

    PenType GetPenType() const
    {
       PenType type;
       SetStatus(DllExports::GdipGetPenFillType(nativePen, &type));

       return type;
    }

    Status SetColor(IN const Color& color)
    {
        return SetStatus(DllExports::GdipSetPenColor(nativePen,
                                                     color.GetValue()));
    }

    Status SetBrush(IN const Brush* brush)
    {
        return SetStatus(DllExports::GdipSetPenBrushFill(nativePen, 
                                       brush->nativeBrush));
    }

    Status GetColor(OUT Color* color) const
    {
        if (color == NULL) 
        {
            return SetStatus(InvalidParameter);
        }
        
        PenType type = GetPenType();

        if (type != PenTypeSolidColor) 
        {
            return WrongState;
        }
        
        ARGB argb;
        
        SetStatus(DllExports::GdipGetPenColor(nativePen,
                                              &argb));
        if (lastResult == Ok)
        {
            color->SetValue(argb);
        }
        
        return lastResult;
    }

    Brush* GetBrush() const
    {
       PenType type = GetPenType();

       Brush* brush = NULL;

       switch(type)
       {
       case PenTypeSolidColor:
           brush = new SolidBrush();
           break;

       case PenTypeHatchFill:
           brush = new HatchBrush();
           break;

       case PenTypeTextureFill:
           brush = new TextureBrush();
           break;

       case PenTypePathGradient:
           brush = new Brush();
           break;

       case PenTypeLinearGradient:
           brush = new LinearGradientBrush();
           break;

       default:
           break;
       }

       if(brush)
       {
           GpBrush* nativeBrush;

           SetStatus(DllExports::GdipGetPenBrushFill(nativePen, &nativeBrush));
           brush->SetNativeBrush(nativeBrush);
       }

       return brush;
    }

    DashStyle GetDashStyle() const
    {
        DashStyle dashStyle;

        SetStatus(DllExports::GdipGetPenDashStyle(nativePen, &dashStyle));

        return dashStyle;
    }

    Status SetDashStyle(IN DashStyle dashStyle)
    {
        return SetStatus(DllExports::GdipSetPenDashStyle(nativePen, dashStyle));
    }

    REAL GetDashOffset() const
    {
        REAL dashOffset;

        SetStatus(DllExports::GdipGetPenDashOffset(nativePen, &dashOffset));

        return dashOffset;
    }

    Status SetDashOffset(IN REAL dashOffset)
    {
        return SetStatus(DllExports::GdipSetPenDashOffset(nativePen, dashOffset));
    }
    
    Status SetDashPattern(IN const REAL* dashArray, IN INT count)
    {
        return SetStatus(DllExports::GdipSetPenDashArray(nativePen, dashArray, 
                                                    count));
    }
    
    INT GetDashPatternCount() const
    {
        INT count = 0;
        
        SetStatus(DllExports::GdipGetPenDashCount(nativePen, &count));
        
        return count;
    }

    Status GetDashPattern(OUT REAL* dashArray, 
                          IN INT count) const
    {
        if (dashArray == NULL || count <= 0)
            return SetStatus(InvalidParameter); 
        
        return SetStatus(DllExports::GdipGetPenDashArray(nativePen, 
                                                         dashArray, 
                                                         count));
    }

    Status SetCompoundArray(IN const REAL* compoundArray,
                            IN INT count)
    {
        return SetStatus(DllExports::GdipSetPenCompoundArray(nativePen, compoundArray, 
                                                    count));
    }

    INT GetCompoundArrayCount() const
    {
        INT count = 0;
        
        SetStatus(DllExports::GdipGetPenCompoundCount(nativePen, &count));
        
        return count;
    }

    Status GetCompoundArray(OUT REAL* compoundArray, 
                            IN INT count) const
    {
        if (compoundArray == NULL || count <= 0)
            return SetStatus(InvalidParameter); 
        
        return SetStatus(DllExports::GdipGetPenCompoundArray(nativePen, 
                                                             compoundArray, 
                                                             count));
    }

    Status GetLastStatus() const
    {
        Status lastStatus = lastResult;
        lastResult = Ok;

        return lastStatus;
    }

protected:

#ifdef DCR_USE_NEW_250932

private:
    Pen(const Pen &);
    Pen& operator=(const Pen &);
protected:

#else

    Pen(const Pen& pen)
    {
        pen;
        SetStatus(NotImplemented);
        SetNativePen(NULL);
    }

    Pen& operator=(const Pen& pen)
    {
        pen;
        SetStatus(NotImplemented);
        return *this;
    }

#endif

    Pen(GpPen* nativePen, Status status)
    {
        lastResult = status;
        SetNativePen(nativePen);
    }

    VOID SetNativePen(GpPen* nativePen)
    {
        this->nativePen = nativePen;
    }
    
    Status SetStatus(Status status) const
    {
        if (status != Ok)
            return (lastResult = status);
        else 
            return status;
    }

protected:
    GpPen* nativePen;
    mutable Status lastResult;
};

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产自在久精品国产| 中文字幕第一页久久| 成人动漫av在线| 午夜电影网一区| 国产精品久久久久久久久图文区 | 日韩一区二区三| 成人亚洲精品久久久久软件| 肉丝袜脚交视频一区二区| 国产精品美女久久久久av爽李琼| 欧美疯狂做受xxxx富婆| 色综合久久天天| 国产91清纯白嫩初高中在线观看| 日韩av电影天堂| 亚洲免费在线播放| 国产欧美日韩一区二区三区在线观看| 欧美三级电影一区| av激情亚洲男人天堂| 国产一区二区在线观看免费| 亚洲成人av中文| 亚洲精品成人精品456| 欧美国产日韩一二三区| 2021中文字幕一区亚洲| 日韩三级免费观看| 9191成人精品久久| 欧美在线不卡视频| 在线亚洲高清视频| 色综合久久久久综合体桃花网| 国产精品一卡二卡在线观看| 精品在线播放午夜| 美女网站一区二区| 久久99九九99精品| 美国十次综合导航| 日韩精品五月天| 午夜精品久久久久久久| 亚洲午夜在线视频| 五月婷婷综合网| 性欧美大战久久久久久久久| 亚洲综合男人的天堂| 一区二区三区在线观看动漫| 亚洲男人都懂的| 亚洲精品国产a久久久久久| 国产精品久久久久久福利一牛影视| 国产视频一区在线播放| 国产精品视频yy9299一区| 国产精品久久久99| 亚洲少妇30p| 亚洲在线观看免费| 亚洲成人动漫在线免费观看| 日韩电影免费一区| 久久精品国产亚洲a| 久久国产精品一区二区| 国产在线播精品第三| 成人午夜av影视| 色综合久久综合网97色综合| 欧美性色综合网| 欧美日韩久久久一区| 日韩午夜激情视频| 久久九九久久九九| 亚洲天堂网中文字| 一区二区三区免费观看| 天天综合天天综合色| 捆绑紧缚一区二区三区视频| 国产在线国偷精品免费看| 成人丝袜视频网| 欧美亚洲国产一区在线观看网站| 欧美日韩一本到| 久久色视频免费观看| 日韩久久一区二区| 日本午夜一区二区| 国产69精品一区二区亚洲孕妇| 99国产精品一区| 3d成人h动漫网站入口| 精品国产网站在线观看| 中文字幕一区在线观看视频| 亚洲一区二区三区自拍| 精品亚洲免费视频| 91啪九色porn原创视频在线观看| 欧美日韩日本视频| 国产日韩欧美精品在线| 亚洲午夜av在线| 国产美女视频一区| 欧美日韩在线电影| 精品久久久久久最新网址| 中文字幕一区二区三区不卡| 天堂蜜桃一区二区三区| 国产精品996| 欧美偷拍一区二区| 久久精品视频在线看| 午夜精品福利一区二区三区av| 精品中文av资源站在线观看| 91在线免费看| 26uuu亚洲综合色| 亚洲成人av中文| 99精品视频在线观看免费| 日韩精品一区二区三区老鸭窝| 亚洲女厕所小便bbb| 精品亚洲aⅴ乱码一区二区三区| 99久久久无码国产精品| 精品国产一区二区精华| 亚洲二区在线观看| eeuss鲁一区二区三区| 日韩精品一区二区三区三区免费| 亚洲一区在线观看免费| 国产**成人网毛片九色| 日韩一区二区在线观看视频| 一区二区三区四区激情 | 国内偷窥港台综合视频在线播放| 91麻豆福利精品推荐| 欧美大尺度电影在线| 亚洲国产美女搞黄色| 成人不卡免费av| 久久综合视频网| 视频一区在线播放| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 日韩亚洲欧美在线观看| 亚洲精品免费视频| 成人app在线观看| 久久精品一区二区| 韩国av一区二区三区四区| 欧美一区二区三级| 亚洲成人免费看| 在线影院国内精品| 综合自拍亚洲综合图不卡区| 成人av在线一区二区三区| 26uuu精品一区二区| 麻豆91小视频| 日韩免费一区二区三区在线播放| 亚欧色一区w666天堂| 在线视频综合导航| 一区二区三区精品在线观看| eeuss国产一区二区三区| 欧美国产日韩a欧美在线观看| 国产一区二区精品久久91| 日韩欧美国产精品| 激情五月婷婷综合网| 日韩欧美亚洲国产另类| 毛片基地黄久久久久久天堂| 91精品国产一区二区人妖| 五月天一区二区| 91精品在线观看入口| 免费观看一级特黄欧美大片| 欧美一区二区三区日韩视频| 日本中文字幕不卡| 欧美一级生活片| 久久精品999| 久久久久久日产精品| 国产成人h网站| 国产精品久久久久久久久图文区 | 777奇米四色成人影色区| 五月婷婷综合激情| 日韩一级免费一区| 国内成人免费视频| 中文字幕日韩精品一区| 91行情网站电视在线观看高清版| 亚洲男人的天堂av| 在线观看成人小视频| 视频一区二区三区在线| 日韩一级免费观看| 成人黄色综合网站| 亚洲激情av在线| 欧美一区二区在线看| 国产一区二区在线电影| 亚洲欧洲成人自拍| 欧美日韩一区小说| 激情综合网av| 亚洲欧美日韩人成在线播放| 欧美揉bbbbb揉bbbbb| 蜜桃免费网站一区二区三区| 久久综合久久99| 一本大道av一区二区在线播放| 亚洲成人综合网站| 精品国产髙清在线看国产毛片| 国产成人一区二区精品非洲| 一区二区在线观看免费视频播放| 8x8x8国产精品| 成人动漫一区二区在线| 三级欧美在线一区| 国产日韩精品一区二区三区| 精品视频在线免费| 国产精品白丝jk黑袜喷水| 亚洲在线免费播放| 国产亚洲人成网站| 欧美日韩高清一区二区不卡| 国产精品白丝av| 日韩精品一卡二卡三卡四卡无卡| 国产清纯美女被跳蛋高潮一区二区久久w| 色综合天天综合网天天狠天天| 日本vs亚洲vs韩国一区三区二区| 国产精品久久二区二区| 日韩欧美一卡二卡| 欧美午夜精品久久久久久孕妇| 精品一区二区三区日韩| 亚洲国产综合人成综合网站| 欧美国产激情一区二区三区蜜月| 欧美日韩亚洲综合在线| www.亚洲在线| 国产高清在线精品| 美女www一区二区| 午夜精品福利在线| 亚洲精品乱码久久久久久久久|