Я хочу создать две коробки с изображением, перекрывающиеся. Первый Picturebox используется в качестве фона, изображения на экране. с помощью этого метода:Прозрачная коробка с изображением поверх другого окна изображения не работает. Как это исправить?
public void BckShow()
{
Rectangle rect = Screen.GetBounds(this);
gBackImg = Graphics.FromImage(bBackImg);
gBackImg.CopyFromScreen(0,0,0,0,
Screen.PrimaryScreen.Bounds.Size,
CopyPixelOperation.SourceCopy);
}
Второй PictureBox находится выше первой, прозрачной коробке изображения, которые могут быть сделаны с помощью этого события мыши:
public void Draw(bool draw, Point sp, Point ep)
{
if (draw)
{
gCanvas.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;
pen = new Pen(new SolidBrush(ColorName), BrushSize);
if (toolPen.Checked)
{
gCanvas.DrawLine(pen, sp, ep);
}
else if (toolEreser.Checked)
{
Rectangle rect = new Rectangle(ep.X, ep.Y, BrushSize*5, BrushSize*5);
gCanvas.DrawEllipse(pen, rect);
gCanvas.FillEllipse(new SolidBrush(ColorName), rect);
}
bCanvas.MakeTransparent(Color.White);
pbxCanvas.Refresh();
dirty = true;
toolSave.Enabled = true;
}
}
private void pbxCanvas_MouseDown(object sender, MouseEventArgs e)
{
sp = e.Location;
if (e.Button == MouseButtons.Left)
{
ActivePaint = true;
}
}
private void pbxCanvas_MouseUp(object sender, MouseEventArgs e)
{
ActivePaint = false;
}
private void pbxCanvas_MouseMove(object sender, MouseEventArgs e)
{
ep = e.Location;
Draw(ActivePaint, sp, ep);
sp = ep;
}
но когда я запустить программу, второй PictureBox ничего не рисует, когда событие мыши было запущено. как я могу это исправить?
Я делаю это, потому что я просто хочу сохранить изображение во втором окне изображения. В отличие от PrintScreen, но, казалось, делал заметки на экране и сохранял изображение отдельно от изображения на экране.
Есть ли другой способ сделать это? например, с помощью элементов управления, отличных от окна изображения, или может напрямую использовать экран в качестве фона, но при этом сохранить изображение в прозрачном PictureBox можно отдельно.
Это пример, который я хочу, чтобы достичь:
при рисовании:
результатов сохраненных изображений:
Я надеюсь, что вы все мне поможет это исправить. извините за плохое объяснение.
это окно документа наброски более подробно:
Можете добавить скриншот окна контура документа. Это показывает, как ваши PictureBoxes выровнены по вашей форме. – dwonisch
@woni: да, конечно, вы можете увидеть его выше – user3332360
Является ли ваш PictureBox закрепленным в его родительском контейнере, попробуйте покрасить в верхнем левом углу и проверьте, не активированы ли события. – dwonisch