本文整理汇总了C++中gdiplus::GraphicsPath::Reset方法的典型用法代码示例。如果您正苦于以下问题:C++ GraphicsPath::Reset方法的具体用法?C++ GraphicsPath::Reset怎么用?C++ GraphicsPath::Reset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类gdiplus::GraphicsPath
的用法示例。
在下文中一共展示了GraphicsPath::Reset方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateOptions
/* Creating of the options from the script. */
bool DIALOGUE::CreateOptions(){
// atributes
std::wstring text;
Gdiplus::GraphicsPath path;
// caused changes which will be paired with the options
std::string state_name;
std::vector<state_changes> changes;
if(!script.FindElem(L"OPTIONS")){
TermLog("Options tag not found in the Dialogue scene, script.xml file is probably damaged.");
return false;
}
script.IntoElem();
// Going through the options
if(!script.FindElem(L"OPTION")){
script.OutOfElem();
TermLog("No option to choose found in the dialogue scene.");
return false;
}
else do {
text = script.GetAttrib(L"text");
line_top -= line_height; // Put the line above the previous
stat = path.AddString(text.c_str(), -1, fontFamily, Gdiplus::FontStyleBold, text_size, Gdiplus::PointF(0, Gdiplus::REAL(line_top)), &strformat);
if (stat != 0) StatusLog("GraphicPath.AddString()", stat, false);
script.IntoElem();
if(!CheckTests()){
script.OutOfElem();
continue;
}
// creates the map of state changes
while(script.FindElem(L"STATECHANGE")){
state_changes current_changes;
current_changes.name = wstring2string(script.GetData());
current_changes.value = atoi((wstring2string(script.GetAttrib(L"value"))).c_str());
current_changes.replace = atoi((wstring2string(script.GetAttrib(L"replace"))).c_str()) != 0 ? true : false;
changes.push_back(current_changes);
}
script.OutOfElem(); // Jumps out of the object
options.push_back(OPTION(text, &path, changes));
changes.clear();
StatusLog("GraphicPath.Reset()", path.Reset(), false);
} while(script.FindElem(L"OPTION"));
script.OutOfElem();
return true;
}
示例2: DrawImage
void CSkinUnitODL::DrawImage(Gdiplus::Graphics& gcDrawer, Gdiplus::GraphicsPath& gcPath, Gdiplus::PointF& ptOffset, Gdiplus::REAL fScale)
{
if (m_imgSkin)
{
if (m_nWrapMode>=4)
{
//居中模式
Gdiplus::RectF rtArea;
gcPath.GetBounds(&rtArea);
Gdiplus::GraphicsPath gcDrawPath;
//图片中间X:(width-imagewidth )/2 + left;
//Y: (height - imageheight)/2 +top;
Gdiplus::REAL fX0 = (rtArea.Width - m_fSkinWidth-m_nGroutX) /2.0f + rtArea.X;
Gdiplus::REAL fY0 = (rtArea.Height - m_fSkinHeight-m_nGroutY) /2.0f + rtArea.Y;
Gdiplus::REAL fX1 = m_fSkinWidth + m_nGroutX+ fX0;
Gdiplus::REAL fY1 = m_fSkinHeight +m_nGroutY+ fY0;
std::vector<Gdiplus::PointF> arrPt;
arrPt.emplace_back(fX0, fY0);
arrPt.emplace_back(fX1, fY0);
arrPt.emplace_back(fX1, fY1);
arrPt.emplace_back(fX0, fY1);
Gdiplus::Matrix mx;
Gdiplus::PointF ptCenter=Gdiplus::PointF((fX1+fX0)/2.0f, (fY1+fY0)/2.0f);
mx.RotateAt(m_fRotate, ptCenter);
mx.TransformPoints(arrPt.data(), arrPt.size());
gcDrawPath.AddPolygon(arrPt.data(),arrPt.size());
//如果图片的path大于当前区域Path,则居中操作在区域内
{
BRepBuilderAPI_MakePolygon ply1;
for (auto& ptPos:arrPt)
{
ply1.Add(gp_Pnt(ptPos.X, 0.0f, ptPos.Y));
}
ply1.Close();
TopoDS_Face face1 = BRepBuilderAPI_MakeFace(ply1.Wire()).Face();
std::vector<Gdiplus::PointF> arrPic;
arrPic.resize(gcDrawPath.GetPointCount());
gcPath.GetPathPoints(arrPic.data(), arrPic.size());
BRepBuilderAPI_MakePolygon ply2;
for (auto& ptPos:arrPic)
{
ply2.Add(gp_Pnt(ptPos.X, 0.0f, ptPos.Y));
}
ply2.Close();
TopoDS_Face face2 = BRepBuilderAPI_MakeFace(ply2.Wire()).Face();
BRepAlgoAPI_Common bc(face1, face2);
auto face = bc.Shape();
TopExp_Explorer expWire(face, TopAbs_WIRE);
std::vector<Gdiplus::PointF> arrDraw;
for ( BRepTools_WireExplorer expVertex(TopoDS::Wire(expWire.Current())); expVertex.More(); expVertex.Next() )
{
auto pnt = BRep_Tool::Pnt(expVertex.CurrentVertex());
arrDraw.emplace_back(static_cast<Gdiplus::REAL>(pnt.X()), static_cast<Gdiplus::REAL>(pnt.Z()));
}
gcDrawPath.Reset();
gcDrawPath.AddPolygon(arrDraw.data(), arrDraw.size());
}
Gdiplus::WrapMode wmMode=(Gdiplus::WrapMode)m_nWrapMode;
if (std::fabs(m_fRotate)<0.001f)
{
Gdiplus::TextureBrush brush(m_imgSkin, wmMode);
mx.Translate(fX0, fY0);
brush.SetTransform(&mx);
gcDrawer.FillPath(&brush, &gcDrawPath);
}
else
{
Gdiplus::TextureBrush brush(m_imgSkin, wmMode);
mx.Translate(fX0, fY0);
brush.SetTransform(&mx);
gcDrawer.FillPath(&brush, &gcDrawPath);
}
}
else
{
//铺满模式
Gdiplus::WrapMode wmMode=(Gdiplus::WrapMode)m_nWrapMode;
if (std::fabs(m_fRotate)<0.001f)
{
Gdiplus::TextureBrush brush(m_imgSkin, wmMode);
brush.TranslateTransform(ptOffset.X, ptOffset.Y);
gcDrawer.FillPath(&brush, &gcPath);
}
else
{
Gdiplus::TextureBrush brush(m_imgSkin, wmMode);
brush.TranslateTransform(ptOffset.X, ptOffset.Y);
brush.RotateTransform(m_fRotate);
gcDrawer.FillPath(&brush, &gcPath);
}
}
}
}
示例3: CreateObjects
/* Function creates objects from script - first it take names and than it creates path for a region and afterwards the map of state changes. */
bool INTERACTIVE::CreateObjects() {
// attributes
std::wstring name;
std::wstring caption;
std::string sound_path;
std::string caption_sound_path;
bool finish_scene;
// object's space
Gdiplus::GraphicsPath boundaries;
int verticle_count;
Gdiplus::Point * verticles;
int x, y;
// caused changes
std::string state_name;
std::vector<state_changes> changes;
// control
bool verticles_OK = true;
// Tag is not necessary for the editor
if(!script.FindElem(L"OBJECTS"))
return true;
script.IntoElem();
// Tag is not necessary for the editor
if(!script.FindElem(L"OBJECT")){
script.OutOfElem();
return true;
}
else do {
// atributes reading
name = script.GetAttrib(L"name");
caption = script.GetAttrib(L"caption");
sound_path = wstring2string(script.GetAttrib(L"sound_source"));
caption_sound_path = wstring2string(script.GetAttrib(L"caption_sound"));
verticle_count = atoi((wstring2string(script.GetAttrib(L"v_count"))).c_str());
if(verticle_count < 3){
Log("Verticle count in one of the objects is too low");
verticles_OK = false;
}
finish_scene = (atoi((wstring2string(script.GetAttrib(L"finish_scene"))).c_str())) != 0 ? true : false;
script.IntoElem(); // Jumps into the object
if(!CheckTests()){
script.OutOfElem();
continue;
}
// creates verticles for the object polygon
verticles = new Gdiplus::Point [verticle_count];
for(int i = 0; i < verticle_count; i++){
if(!script.FindElem(L"VERTEX")){
Log("There is not responding count of vertices in one object in script.");
verticles_OK = false;
}
x = atoi((wstring2string(script.GetAttrib(L"x"))).c_str());
y = atoi((wstring2string(script.GetAttrib(L"y"))).c_str());
verticles[i] = Gdiplus::Point(x, y);
}
if(!verticles_OK){
delete [] verticles;
script.OutOfElem();
continue;
}
else{
boundaries.AddPolygon(verticles, verticle_count);
delete [] verticles;
}
// creates the vector of state changes
while(script.FindElem(L"STATECHANGE")){
state_changes current_changes;
current_changes.name = wstring2string(script.GetData());
current_changes.value = atoi((wstring2string(script.GetAttrib(L"value"))).c_str());
current_changes.replace = atoi((wstring2string(script.GetAttrib(L"replace"))).c_str()) != 0 ? true : false;
changes.push_back(current_changes);
}
script.OutOfElem(); // Jumps out of the object
objects.push_back(SCENE_OBJECT(&boundaries, name, caption, sound_path, caption_sound_path, changes, finish_scene));
boundaries.Reset();
changes.clear();
} while(script.FindElem(L"OBJECT"));
script.OutOfElem();
return true;
}