Page UnitをInchに設定するとGraphicsContainerが動作しないようです。GDI + GraphicsContainerが機能しません
私は以下のコードのようにテストしました。このコードで
、私は2つの楕円を描く - (1)前(2回目)の後にコンテナが開始されます。
コンテナが動作している場合、円の色は青でなければなりません。それはまだ緑色です。 BeginContainer()の下の2番目の描画コードがまったく動作しないことを意味します。
これは、UnitInch以外のUnitPixelまたはUnitWorldにページ単位を設定したときには起こりませんでした。 理由は何ですか?私が見逃した何かが間違っていますか?どうすれば解決できますか?
CPaintDC dc(this); CRect rec; GetClientRect(&rec);
Gdiplus::Graphics g(dc.GetSafeHdc());
g.SetPageUnit(UnitInch);
float dx = 2; float dy = 4;
REAL DpiX = g.GetDpiX(); REAL DpiY = g.GetDpiY();
Matrix flipMatrix(1.0f, 0.0f, 0.0f,-1.0f,-dx,dy);
g.SetTransform(&flipMatrix);
g.TranslateTransform((rec.Width()/2)/DpiX ,(rec.Height()/2)/DpiY, Gdiplus::MatrixOrderAppend);
//Pen//
Gdiplus::Pen RedPen(Gdiplus::Color::Red, 0.1);
Gdiplus::Pen BluePen(Gdiplus::Color::Blue, 0.1);
Gdiplus::Pen GreenPen(Gdiplus::Color::Green, 0.1);
//Draw Cross
g.DrawLine(&GreenPen, PointF(dx-1.0f,dy+1.0f), PointF(dx+1.0f, dy-1.0f));
g.DrawLine(&GreenPen, PointF(dx+1.0f,dy+1.0f), PointF(dx-1.0f, dy-1.0f));
//Draw 1st Ellipse without Container
g.DrawEllipse(&RedPen, dx-1,dy-1, 2.0f,2.0f);
GraphicsContainer C;
//Start Container------
C=g.BeginContainer();
//Draw 2nd Ellipse within Container
g.DrawEllipse(&BluePen, dx-1,dy-1, 2.0f,2.0f);
//End Container
g.EndContainer(C);
ありがとうございました。 –