C++ 6で書かれたアプリは、トラフィックマップ上の空白のポリゴンで塗りつぶされ、現在の交通状況を表示します。緑色が良い、黄色がより渋滞しているなどGDI +は使用できません。 Windows API呼び出しを使用してビットマップに線を描くことはできますか?
"シェルマップ"は、何も埋め込まれていない矩形とポリゴンを使用した道路のビットマップです。データは道路センサ(ワイヤインダクタループ)から収集され、ポリゴンはループ検出器データに基づいて塗りつぶされます。
マップが変更されると、ペイントのビットマップを手動で拡大し、渋滞の色が塗りつぶされる新しい形状の内側の座標を取得する必要があります。マップスケルトンを作成するポリゴンはすべて白い背景に紺色で描かれています。
アプリを作った。ユーザーがポリゴンの白い部分の内側のどこかをクリックすると、内側の境界線の点がユーザーに表示され、縮小されたサムネイルがペイントされた内側のペインタを示します。
.Netでは、周囲が完全に塗りつぶされています。
C++ 6アプリでは、ポリゴンの一部が私のアプリを指しています。収集が正しく表示されません。
私はmsPaintを見て、.NetはMS Paintと同じ方法でポイントを描画しません。
ここに簡単な例があります。コードは1つのボタンと1つのラベルを持つ1つのフォームからです。ビットマップ上に線が描かれ、ビットマップが表示されるようにビットマップが拡大され、ラベルに表示されます。
同じ2つのポイントを使用してペイントに線を描画すると、描かれた線分がMSペイントで描いた線分と同じになりません。どんなに私が適用されますどのような設定
private void button1_Click(object sender, EventArgs e)
{
Bitmap bm = new Bitmap(16, 16);
Graphics g = Graphics.FromImage(bm);
//g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Half;
//g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality;
//g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed;
//g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.None;
g.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.Default;
Point pt = new Point(1, 3);
Point pt2 = new Point(5, 1);
// If you reverse the points, the same line is drawn.
g.DrawLine(Pens.Orange, pt, pt2);
// label1.Image = bm;
Bitmap bm2 = ZoomMap(8, bm);
g.Dispose();
bm.Dispose();
label1.Image = bm2;
}
private Bitmap ZoomMap(int zoomValue, Bitmap bm)
{
Bitmap zoomedBitMap;
Size sz = bm.Size;// new Size(75, 75);
Size newSize = new Size(sz.Width * zoomValue, sz.Height * zoomValue);
zoomedBitMap = new Bitmap(newSize.Width, newSize.Height);
Graphics gr = Graphics.FromImage(zoomedBitMap);
gr.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor;
gr.PageUnit = GraphicsUnit.Pixel;
gr.DrawImage(bm, 1, 1, newSize.Width, newSize.Height);
gr.Dispose();
return zoomedBitMap;
}
は、MSは、C#でペイント模倣する方法はありませんが、C++で6つの模倣MSは完全にペイントします。
既存のビットマップに描画するために呼び出せるウィンドウAPIはありますか?
お返事ありがとうございます。
180度以上の.Netで描画された画像を回転させると、同じ結果が得られます。キャンバスにペイントして回転させ、オーバーレイして見たいものを作り出します。 –