📄 gdipluspath.h
字号:
srcRect.Y,
srcRect.Width,
srcRect.Height,
warpMode,
flatness));
}
INT GetPointCount() const
{
INT count = 0;
SetStatus(DllExports::GdipGetPointCount(nativePath, &count));
return count;
}
Status GetPathTypes(OUT BYTE* types,
IN INT count) const
{
return SetStatus(DllExports::GdipGetPathTypes(nativePath, types,
count));
}
Status GetPathPoints(OUT PointF* points,
IN INT count) const
{
return SetStatus(DllExports::GdipGetPathPoints(nativePath, points,
count));
}
Status GetPathPoints(OUT Point* points,
IN INT count) const
{
return SetStatus(DllExports::GdipGetPathPointsI(nativePath, points,
count));
}
Status GetLastStatus() const
{
Status lastStatus = lastResult;
lastResult = Ok;
return lastStatus;
}
BOOL IsVisible(IN const PointF& point,
IN const Graphics* g = NULL) const
{
return IsVisible(point.X, point.Y, g);
}
BOOL IsVisible(IN REAL x,
IN REAL y,
IN const Graphics* g = NULL) const;
BOOL IsVisible(IN const Point& point,
IN const Graphics* g = NULL) const
{
return IsVisible(point.X, point.Y, g);
}
BOOL IsVisible(IN INT x,
IN INT y,
IN const Graphics* g = NULL) const;
BOOL IsOutlineVisible(IN const PointF& point,
IN const Pen* pen,
IN const Graphics* g = NULL) const
{
return IsOutlineVisible(point.X, point.Y, pen, g);
}
BOOL IsOutlineVisible(IN REAL x,
IN REAL y,
IN const Pen* pen,
IN const Graphics* g = NULL) const;
BOOL IsOutlineVisible(IN const Point& point,
IN const Pen* pen,
IN const Graphics* g = NULL) const
{
return IsOutlineVisible(point.X, point.Y, pen, g);
}
BOOL IsOutlineVisible(IN INT x,
IN INT y,
IN const Pen* pen,
IN const Graphics* g = NULL) const;
protected:
GraphicsPath(const GraphicsPath& path)
{
GpPath *clonepath = NULL;
SetStatus(DllExports::GdipClonePath(path.nativePath, &clonepath));
SetNativePath(clonepath);
}
private:
GraphicsPath& operator=(const GraphicsPath &);
protected:
GraphicsPath(GpPath* nativePath)
{
lastResult = Ok;
SetNativePath(nativePath);
}
VOID SetNativePath(GpPath *nativePath)
{
this->nativePath = nativePath;
}
Status SetStatus(Status status) const
{
if (status != Ok)
return (lastResult = status);
else
return status;
}
protected:
GpPath* nativePath;
mutable Status lastResult;
};
//--------------------------------------------------------------------------
// GraphisPathIterator class
//--------------------------------------------------------------------------
class GraphicsPathIterator : public GdiplusBase
{
public:
GraphicsPathIterator(IN const GraphicsPath* path)
{
GpPath* nativePath = NULL;
if(path)
nativePath = path->nativePath;
GpPathIterator *iter = NULL;
lastResult = DllExports::GdipCreatePathIter(&iter, nativePath);
SetNativeIterator(iter);
}
~GraphicsPathIterator()
{
DllExports::GdipDeletePathIter(nativeIterator);
}
INT NextSubpath(OUT INT* startIndex,
OUT INT* endIndex,
OUT BOOL* isClosed)
{
INT resultCount;
SetStatus(DllExports::GdipPathIterNextSubpath(nativeIterator,
&resultCount, startIndex, endIndex, isClosed));
return resultCount;
}
INT NextSubpath(OUT const GraphicsPath* path,
OUT BOOL* isClosed)
{
GpPath* nativePath = NULL;
INT resultCount;
if(path)
nativePath= path->nativePath;
SetStatus(DllExports::GdipPathIterNextSubpathPath(nativeIterator,
&resultCount, nativePath, isClosed));
return resultCount;
}
INT NextPathType(OUT BYTE* pathType,
OUT INT* startIndex,
OUT INT* endIndex)
{
INT resultCount;
SetStatus(DllExports::GdipPathIterNextPathType(nativeIterator,
&resultCount, pathType, startIndex, endIndex));
return resultCount;
}
INT NextMarker(OUT INT* startIndex,
OUT INT* endIndex)
{
INT resultCount;
SetStatus(DllExports::GdipPathIterNextMarker(nativeIterator,
&resultCount, startIndex, endIndex));
return resultCount;
}
INT NextMarker(OUT const GraphicsPath* path)
{
GpPath* nativePath = NULL;
INT resultCount;
if(path)
nativePath= path->nativePath;
SetStatus(DllExports::GdipPathIterNextMarkerPath(nativeIterator,
&resultCount, nativePath));
return resultCount;
}
INT GetCount() const
{
INT resultCount;
SetStatus(DllExports::GdipPathIterGetCount(nativeIterator,
&resultCount));
return resultCount;
}
INT GetSubpathCount() const
{
INT resultCount;
SetStatus(DllExports::GdipPathIterGetSubpathCount(nativeIterator,
&resultCount));
return resultCount;
}
BOOL HasCurve() const
{
BOOL hasCurve;
SetStatus(DllExports::GdipPathIterHasCurve(nativeIterator, &hasCurve));
return hasCurve;
}
VOID Rewind()
{
SetStatus(DllExports::GdipPathIterRewind(nativeIterator));
}
INT Enumerate(OUT PointF *points,
OUT BYTE *types,
IN INT count)
{
INT resultCount;
SetStatus(DllExports::GdipPathIterEnumerate(nativeIterator,
&resultCount, points, types, count));
return resultCount;
}
INT CopyData(OUT PointF* points,
OUT BYTE* types,
IN INT startIndex,
IN INT endIndex)
{
INT resultCount;
SetStatus(DllExports::GdipPathIterCopyData(nativeIterator,
&resultCount, points, types, startIndex, endIndex));
return resultCount;
}
Status GetLastStatus() const
{
Status lastStatus = lastResult;
lastResult = Ok;
return lastStatus;
}
private:
GraphicsPathIterator(const GraphicsPathIterator &);
GraphicsPathIterator& operator=(const GraphicsPathIterator &);
protected:
VOID SetNativeIterator(GpPathIterator *nativeIterator)
{
this->nativeIterator = nativeIterator;
}
Status SetStatus(Status status) const
{
if (status != Ok)
return (lastResult = status);
else
return status;
}
protected:
GpPathIterator* nativeIterator;
mutable Status lastResult;
};
//--------------------------------------------------------------------------
// Path Gradient Brush
//--------------------------------------------------------------------------
class PathGradientBrush : public Brush
{
public:
friend class Pen;
PathGradientBrush(
IN const PointF* points,
IN INT count,
IN WrapMode wrapMode = WrapModeClamp)
{
GpPathGradient *brush = NULL;
lastResult = DllExports::GdipCreatePathGradient(
points, count,
wrapMode, &brush);
SetNativeBrush(brush);
}
PathGradientBrush(
IN const Point* points,
IN INT count,
IN WrapMode wrapMode = WrapModeClamp)
{
GpPathGradient *brush = NULL;
lastResult = DllExports::GdipCreatePathGradientI(
points, count,
wrapMode, &brush);
SetNativeBrush(brush);
}
PathGradientBrush(
IN const GraphicsPath* path
)
{
GpPathGradient *brush = NULL;
lastResult = DllExports::GdipCreatePathGradientFromPath(
path->nativePath, &brush);
SetNativeBrush(brush);
}
Status GetCenterColor(OUT Color* color) const
{
ARGB argb;
if (color == NULL)
{
return SetStatus(InvalidParameter);
}
SetStatus(DllExports::GdipGetPathGradientCenterColor(
(GpPathGradient*) nativeBrush, &argb));
color->SetValue(argb);
return lastResult;
}
Status SetCenterColor(IN const Color& color)
{
SetStatus(DllExports::GdipSetPathGradientCenterColor(
(GpPathGradient*) nativeBrush,
color.GetValue()));
return lastResult;
}
INT GetPointCount() const
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -