Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 02.06.2011
Сообщений: 44
1

PictureBox - трансляция на рабочий стол

20.12.2013, 22:30. Показов 2209. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Имеется форма с PictureBox - на ней мы можем рисовать по клику мышкой.
Нужно сделать так чтобы все что мы нарисовали, транслировалось на рабочий стол. (не заставкой, а именно новым слоем поверх рабочего стола, под ярлыками).
Нужны советы как такое вообще можно сделать ?
Единственное что приходит на ум - организовать 2-ю прозрачную форму на весь экран со вторым picturebox , которая будет распологаться сразу поверх рабочего стола, и просто транслировать с первого Pb на второй Pb.
Возможно ли вообще такое ? Нужны советы вообщем, буду рад любой помощи)
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.12.2013, 22:30
Ответы с готовыми решениями:

Защищенный рабочий стол
Добрый день. Делаю программу которая не даёт сидеть за компьютером более 30 минут без отдыха. Но не...

Рабочий стол
у меня проблема когда я нажимаю мой компьютер через пуск и его переносить вправую сторону...

Рабочий стол
Помогите. Установил какую-то программу Real Desktop Free(рабочий стол становится как стол). Захотел...

Рабочий стол
Как мне прописать в программе путь до рабочего стола?

2
208 / 164 / 29
Регистрация: 11.09.2013
Сообщений: 445
21.12.2013, 02:05 2
эээ... в вин8 точно будет ломаться, тк рабочий стол, во-первых, есть не всегда, во-вторых - не везде, в-третьих - управляется не так

по делу могу предложить смену фонового рисунка рабочего стола "на лету" из программы. загружаете его как битмап, сохраняете, затем дорисывываете нужное, закидываете новый вместо старого. программа закрывается - возвращаете все на место. только допиливать придется дофига-дофига. за оптимальность не ручаюсь
0
8940 / 4852 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
21.12.2013, 08:49 3
Лучший ответ Сообщение было отмечено korsar-.- как решение

Решение

Да, если нужно рисовать именно на обоях, под иконками, то только сменой картинки обоев. Иначе будет рисоваться поверх всех окон как в примере:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Drawing;
using System.Runtime.InteropServices;
using System.Windows.Forms;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        [DllImport("user32.dll", SetLastError = false)]
        static extern IntPtr GetDesktopWindow();
        [DllImport("user32.dll")]
        static extern IntPtr GetDC(IntPtr hWnd);
        [DllImport("user32.dll")]
        static extern bool ReleaseDC(IntPtr hWnd, IntPtr hDC);
        Point[] points = new Point[1];
        public Form1()
        {
            InitializeComponent();
            this.MouseMove += Form1_MouseMove;
            this.Paint += Form1_Paint;
        }
 
        void Form1_Paint(object sender, PaintEventArgs e)
        {
            try
            {
                e.Graphics.DrawCurve(Pens.Blue, points);
                IntPtr hwnd = GetDesktopWindow();
                IntPtr desktopdc = GetDC(hwnd);
                using (Graphics g = Graphics.FromHdc(desktopdc))
                {
                    g.DrawCurve(Pens.Blue, points); ;
                }
                ReleaseDC(hwnd, desktopdc);
            }
            catch (Exception) { }
        }
 
        void Form1_MouseMove(object sender, MouseEventArgs e)
        {
            switch (e.Button)
            {
                case MouseButtons.Left:
                    points[points.Length - 1] = e.Location;
                    this.Refresh();
                    Array.Resize<Point>(ref points, points.Length + 1);
                    break;
                default:
                    break;
            }
        }
    }
}
1
21.12.2013, 08:49
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.12.2013, 08:49
Помогаю со студенческими работами здесь

Рабочий стол
Подскажите пожалуйста, у меня такая проблема. При нажатие правой кнопкой мыши на пустом рабочем...

Рабочий стол
После перезагрузки значки на рабочем столе перемещаются, как сделать так, чтобы они оставались там...

Рабочий стол
здравствуйте уже далеко не 1-й раз наблюдаю такой баг: включаю компьютер, проходят некоторые...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru