Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Полупрозрачные окна не видят друг друга под собой

36K
15 февраля 2008 года
Nekrasoff
1 / / 15.02.2008
Я хочу сделать окна такие же как в Висте, или например у миранды.. Подскажите как сделать чтобы два окна расположенные друг над другом видели друг друга, Буду благодарен если предложите другой вариант как реализовать окошки подобного рода.

Код программы полностью:
Код:
using System;
using System.Drawing;
using System.Windows.Forms;

namespace Transparency
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.Run(new FormTransparency());
        }
    }

    class FormTransparency : Form
    {
        Image Image;
        Point TempLocation;
        Point Mouse = Point.Empty;

        public FormTransparency()
        {
            this.StartPosition = FormStartPosition.Manual;
            this.Location = new Point(0, 0);
            this.TempLocation = this.Location;
            this.Image = Image.FromFile("Back.png");
            this.ClientSize = Image.Size;
            this.FormBorderStyle = FormBorderStyle.None;
            this.DoubleBuffered = true;
            this.BackColor = SystemColors.Control;
            this.TransparencyKey = this.BackColor;
        }

        protected override void OnKeyPress(KeyPressEventArgs e)
        {
            if (e.KeyChar == 27) Application.Exit();
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            // Я так понимаю проблему можно решить заменой
            // CopyFromScreen на что нибудь другое
            e.Graphics.CopyFromScreen(TempLocation, Point.Empty, Image.Size);
            e.Graphics.DrawImage(Image, new Rectangle(Point.Empty, Image.Size));
        }

        protected override void OnMouseDown(MouseEventArgs e)
        {
            Mouse = e.Location;
            TempLocation = Location;
        }

        protected override void OnMouseUp(MouseEventArgs e)
        {
            Mouse = Point.Empty;
        }

        protected override void OnMouseMove(MouseEventArgs e)
        {
            if (!Mouse.IsEmpty)
            {
                TempLocation.Offset(e.Location);
                TempLocation.Offset(-Mouse.X, -Mouse.Y);
                Refresh();
                Location = TempLocation;
            }
        }
    }
}


И картинка которая используется в примере.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог