как я могу потянуть нулевую круглую резинку непрозрачности по форме окон с 0,3 непрозрачностью? (Круглая резинка сделана после примера Microsoft
Обновление:
Мне нужна та круглая резинка для работы чего-то как маска. При использовании Jing или какого-либо другого инструмента снимка экрана Вы будете видеть ТОЧНО, что я должен сделать, когда делают Вы пытаетесь сделать снимок экрана: экран идет полупрозрачный и когда Вы сделаете выбор, Вы будете видеть 0 выборов непрозрачности
Это Дроид, который вы искали?
public Form1()
{
InitializeComponent();
DoubleBuffered = true;
}
bool mouseDown = false;
Point mouseDownPoint = Point.Empty;
Point mousePoint = Point.Empty;
protected override void OnMouseDown(MouseEventArgs e)
{
base.OnMouseDown(e);
mouseDown = true;
mousePoint = mouseDownPoint = e.Location;
}
protected override void OnMouseUp(MouseEventArgs e)
{
base.OnMouseUp(e);
mouseDown = false;
}
protected override void OnMouseMove(MouseEventArgs e)
{
base.OnMouseMove(e);
mousePoint = e.Location;
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
base.OnPaint(e);
if (mouseDown)
{
Region r = new Region(this.ClientRectangle);
Rectangle window = new Rectangle(
Math.Min(mouseDownPoint.X, mousePoint.X),
Math.Min(mouseDownPoint.Y, mousePoint.Y),
Math.Abs(mouseDownPoint.X - mousePoint.X),
Math.Abs(mouseDownPoint.Y - mousePoint.Y));
r.Xor(window);
e.Graphics.FillRegion(Brushes.Red, r);
Console.WriteLine("Painted: " + window);
}
}
Вам нужно использовать частично непрозрачный цвет при нанесении:
Обновлена линия от связанной статьи, в MyDrawReversibleEctulectangleugle
метода:
ControlPaint.DrawReversibleFrame( rc, Color.FromArgb(80, 120, 120, 120), FrameStyle.Dashed );
Просто используйте дополнительную форму, не показывая ее в панели задач или других вариантов формы Отказ Установите область формы, которую он показывает резиновую полосу. И убедитесь, что оба Windows ведут себя так, как будто это было одно окно (перемещение, закрытие, ...). Я знаю, что это не элегантный способ, но с небольшой работой он может производить хорошие результаты. Вы можете убедиться, что форма находится сверху в форме иерархии, и все равно не получает фокус.
, устанавливая регион хорошо, все события будут переходить к другой форме.
Это так, как я разработал эквивалентную проблему (я не говорю, что это хорошее решение, но это работает)
Я использовал код, который @Dearmash предоставил в утилите захвата экрана, которая поставляется с моим приложением с открытым исходным кодом BugTracker. .СЕТЬ. Приложение не очень большое, поэтому, если вы занимаетесь захватом экрана, это может быть хорошей отправной точкой. Дополнительная информация здесь:
http://ifdefined.com/blog/post/Screen-capture-utility-in-C-NET.aspx