Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WPF, Silverlight Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2      [все]
 Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Здравствуйте!
Посоветовали ваш форум, сказали, что здесь есть люди, которые могут помочь в решении следующей задачи.
В моей программе требуется сделать так, чтобы клики проходили сквозь форму. Т.е. есть приложение, при нажатии на кнопку на первом окне открывается второе окно сквозь которое должны проходить клики (например, если за окном ярлык - то клик идет по ярлыку, если мы смотрим фильм и жмем на плеер сквозь то же самое окно - ставится пауза). Т.е. это окно должно быть просто информационным. Оно не должно даже активироваться при клике по нему.

Я пишу код в C#, а сами формы делаю в WPF. Все дело в том, что здесь не обойтись без API, а я в этом абсолютно не шарю. Поэтому очень прошу помочь!
Буду очень благодарен за помощь!
6 ноя 18, 20:42    [21725862]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
А такое не подойдет?
<Window x:Class="WpfApp2.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp2"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525" Background="Transparent"
        WindowStyle="None" AllowsTransparency="True">

  <Border BorderThickness="2" BorderBrush="Blue">
    <TextBlock Text="BlaBla" FontSize="20" Foreground="Aqua" />
  </Border>


</Window>

правда, тут клики проходят только сквозь прозрачные места - сквозь текст не проходят и IsHitTestVisible=False не помогает
6 ноя 18, 21:10    [21725879]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Такое я уже пробовал делать. Суть в том, что на форме будет изображение и клики должны проходить сквозь него в том числе

Я находил вот такой код, но во-первых, это C++, во-вторых, я не понимаю, что в нем и как работает (и должно ли вообще работать)

public enum GWL
{
    ExStyle = -20
}

public enum WS_EX
{
    Transparent = 0x20,
    Layered = 0x80000
}

public enum LWA
{
    ColorKey = 0x1,
    Alpha = 0x2
}

[DllImport("user32.dll", EntryPoint = "GetWindowLong")]
public static extern int GetWindowLong(IntPtr hWnd, GWL nIndex);

[DllImport("user32.dll", EntryPoint = "SetWindowLong")]
public static extern int SetWindowLong(IntPtr hWnd, GWL nIndex, int dwNewLong);

[DllImport("user32.dll", EntryPoint = "SetLayeredWindowAttributes")]
public static extern bool SetLayeredWindowAttributes(IntPtr hWnd, int crKey, byte alpha, LWA dwFlags);

protected override void OnShown(EventArgs e)
{
    base.OnShown(e);
    int wl = GetWindowLong(this.Handle, GWL.ExStyle);
    wl = wl | 0x80000 | 0x20;
    SetWindowLong(this.Handle, GWL.ExStyle, wl);
    SetLayeredWindowAttributes(this.Handle, 0, 128, LWA.Alpha);
}
6 ноя 18, 21:18    [21725881]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
А такое не подойдет?
правда, тут клики проходят только сквозь прозрачные места - сквозь текст не проходят и IsHitTestVisible=False не помогает
Это я посоветовал сюда обратиться. Автору нужно полностью "сквозное" для кликов. Или чтобы пр приближении к окну курсора, окно исчезало и появлялось когда курсор отдаляется.
Я не знаю такое, вообще, возможно без API ? Ведь распределение событий между приложениями это работа OC и, кажется, выходит за рамки Net.
6 ноя 18, 21:21    [21725884]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Eld Hasp абсолютно прав!)
6 ноя 18, 21:27    [21725887]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
Такое ощущение, что этот сишный код делает то же, что и мой XAML, то есть устанавливает прозрачность окна.
Но дело в том, что содержимое окна в WPF отрисовывается через DirectX, а не через GDI
Прозрачность окна WPF отрабатывает нормально, почему не отрабатывает IsHitTestVisible - непонятно.
6 ноя 18, 21:46    [21725898]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Насколько я понял, IsHitTestVisible просто убирает клик по окну. Т.е. если щелкнуть левой кнопкой мыши по окну - клик просто не будет воспринят, но окно все равно будет активировано
6 ноя 18, 21:49    [21725900]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Shocker.Pro
Member

Откуда: ->|<- :адуктО
Сообщений: 20286
MrKoder
Насколько я понял, IsHitTestVisible просто убирает клик по окну. Т.е. если щелкнуть левой кнопкой мыши по окну - клик просто не будет воспринят, но окно все равно будет активировано
Нет, у меня как раз клик проходит сквозь окно и активирует то, на что было кликнуто за ним.
Но я про тот же текст. Клик на тексте как раз-таки активирует окно, даже если на текстблоке IsHitTestVisible=False
6 ноя 18, 22:46    [21725931]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Shocker.Pro
Нет, у меня как раз клик проходит сквозь окно и активирует то, на что было кликнуто за ним.
По моему дело в прозрачности. Если окно прозрачно то клик проходит не зависимо от установок IsHitTestVisible. Это ещё, если правильно помню, появилось в WinXP - так делали окна не прямоугольной формы.
Shocker.Pro
Но я про тот же текст. Клик на тексте как раз-таки активирует окно, даже если на текстблоке IsHitTestVisible=False
IsHitTestVisible - оно по-моему действует только в рамках приложения. Или даже окна.
6 ноя 18, 23:01    [21725935]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Да, клики сквозь прозрачную форму проходят и без указания этого свойства
6 ноя 18, 23:06    [21725942]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
MrKoder, прочитайте https://stackoverrun.com/ru/q/6061756
Может можно получить координаты курсора на экране и если они близки координатам окна скрыть его.
6 ноя 18, 23:19    [21725948]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
MrKoder, И это тоже посмотрите http://vsokovikov.narod.ru/New_MSDN_API/Cursor/fn_getcursorpos.htm
6 ноя 18, 23:28    [21725953]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Eld Hasp
так делали окна не прямоугольной формы.
там в дырках-вырезах не было ничего.
Вы же хотите сверху нарисовать, а под ним кликнуть то что не видно?
Ничего не понял.
6 ноя 18, 23:36    [21725962]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Т.е. это окно должно быть просто информационным.
делают balloonhint привязанный к курсору.
6 ноя 18, 23:38    [21725964]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Petro123
там в дырках-вырезах не было ничего.
Вы же хотите сверху нарисовать, а под ним кликнуть то что не видно?
Ничего не понял.
Да, я и пишу о прозрачных областях в которых ничего нет. Такое возможно.
Но автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.
6 ноя 18, 23:49    [21725971]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Eld Hasp
Но автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.

так и представил, иконку 64 на 64 и при клике "на ней\ под ней" запустился почтовый клиент с зависанием на 5 минут))
7 ноя 18, 00:14    [21725984]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Eld Hasp
Member

Откуда:
Сообщений: 225
Petro123
Eld Hasp
Но автору нужно "сквозной" клик через непрозрачную или полупрозрачную область.

так и представил, иконку 64 на 64 и при клике "на ней\ под ней" запустился почтовый клиент с зависанием на 5 минут))
Как я понял из разъяснений автора, он делает какое-то информационное окошко которое нужно во время какой-то игры. А так как оно заслоняет поле игры, то надо чтобы клики через него попадали в окно игры.
7 ноя 18, 00:33    [21726002]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Eld Hasp,
В играх окна рукописные и могут не иметь хэндла.
Т.е.игра рисуется слоями на экране.... Сцена.
И такой проблемы автора там не будет.
2. В играх уже есть движок с окнами. Без движка как то странно.
3. В играх специфика. На ресурс https://gamedev.ru/forum/
7 ноя 18, 07:18    [21726058]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Я делаю, пот сути, оверлей, плагин для игр. Это будет просто прицел по центру экрана (в виде точки, крестика, треугольника и т.д.). Он не привязывается к какой-либо конкретной игре
7 ноя 18, 08:04    [21726077]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Я делаю, пот сути, оверлей, плагин для игр. Это будет просто прицел по центру экрана (в виде точки, крестика, треугольника и т.д.). Он не привязывается к какой-либо конкретной игре
нельзя было сразу это написать?
7 ноя 18, 08:30    [21726086]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder,
Приложение должно выводить для плагинов onPaint событие.
И рисуй там хоть прицел, хоть меридианы координат.
7 ноя 18, 08:56    [21726092]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Прицел то будет в виде картинки, а не рисованный пикселями "от руки"
7 ноя 18, 09:04    [21726097]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
И вопрос опять же в том, как это реализовать
7 ноя 18, 09:05    [21726098]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Прицел то будет в виде картинки, а не рисованный пикселями "от руки"
в смысле?
В onPaint ты копируешь картинку на Canvas, сохраняя прозрачность.
Что не так?
7 ноя 18, 09:45    [21726128]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Можно, пожалуйста, пример
Я не так давно работаю с c# и wpf, еще не сталкивался с onPaint
7 ноя 18, 09:56    [21726143]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
Можно, пожалуйста, пример
Я не так давно работаю с c# и wpf, еще не сталкивался с onPaint
как вывести в плагин onPaint тебе подскажут боее опытные в WPF.
Я помог переформулировать задачу, т. к. рисовать надо не в новом окне и потом бороться с перехватом мышки, а окне приложения.
7 ноя 18, 09:59    [21726153]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Petro123,
Хорошо, спасибо! Буду ждать, мб кто поможет
7 ноя 18, 19:34    [21727301]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
MrKoder
Petro123,
Хорошо, спасибо! Буду ждать, мб кто поможет

разве вам не помог пост с 1 страницы?

вот готовое решение, я проверил, всё работает:

файл с вызовом WinAPI, в нём какая то сомнительная муть со словарем, которую явно надо выкинуть, оставляю это вам, мне то это нафиг не надо :) в данный момент
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Windows;
using System.Windows.Interop;

namespace Meytes.WPF.Helpers
{
    internal static class WindowTransparentHelper
    {
        /// <summary> Справочник в котором хранятся старые состояния стиля окон </summary>
        private static readonly Dictionary<IntPtr, int> s_extendedStyleHwndDictionary
            = new Dictionary<IntPtr, int>();

        private const int WS_EX_TRANSPARENT = 0x00000020;
        private const int GWL_EXSTYLE = (-20);

        [DllImport("user32.dll", EntryPoint = "GetWindowLong")]
        private static extern int GetWindowLong(IntPtr hwnd, int index);

        [DllImport("user32.dll", EntryPoint = "SetWindowLong")]
        private static extern int SetWindowLong(IntPtr hwnd, int index, int newStyle);

        /// <summary> Делает окно прозрачным для ввода мышки </summary>
        /// <param name="hwnd">HWND окна</param>
        public static void SetWindowExTransparent(IntPtr hwnd)
        {
            int extendedStyle = GetWindowLong(hwnd, GWL_EXSTYLE);
            SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle | WS_EX_TRANSPARENT);
            if (s_extendedStyleHwndDictionary.Keys.Contains(hwnd) == false)
            {
                s_extendedStyleHwndDictionary.Add(hwnd, extendedStyle);
            }
        }

        /// <summary> Отключает прозрачность для ввода мышки у окна</summary>
        /// <param name="hwnd">HWND окна</param>
        public static void UndoWindowExTransparent(IntPtr hwnd)
        {
            if (s_extendedStyleHwndDictionary.Keys.Contains(hwnd))
            {
                int extendedStyle = s_extendedStyleHwndDictionary[hwnd];
                SetWindowLong(hwnd, GWL_EXSTYLE, extendedStyle);
            }
        }
    }

    public class PopupTransparentBehavior
    {
        /// <summary> Прикрепляемое свойство зависимости отвечающее за прозрачность формы для ввода </summary>
        public static readonly DependencyProperty IsPopupEventTransparentProperty =
            DependencyProperty.RegisterAttached("IsPopupEventTransparent",
                                                typeof(bool),
                                                typeof(PopupTransparentBehavior),
                                                new UIPropertyMetadata(false, OnIsPopupEventTransparentPropertyChanged));

        public static bool GetIsPopupEventTransparent(DependencyObject obj) { return (bool)obj.GetValue(IsPopupEventTransparentProperty); }
        public static void SetIsPopupEventTransparent(DependencyObject obj, bool value) { obj.SetValue(IsPopupEventTransparentProperty, value); }

        private static void OnIsPopupEventTransparentPropertyChanged(DependencyObject target, DependencyPropertyChangedEventArgs e)
        {
            var element = target as FrameworkElement;
            var topParent = GetTopParent(element);
            var popupHwndSource = PresentationSource.FromVisual(topParent) as HwndSource;
            if (popupHwndSource == null) return;

            var newValue = (bool)e.NewValue;
            if (newValue)
                WindowTransparentHelper.SetWindowExTransparent(popupHwndSource.Handle);
            else
                WindowTransparentHelper.UndoWindowExTransparent(popupHwndSource.Handle);
        }

        public static FrameworkElement GetTopParent(FrameworkElement element)
        {
            return LogicalTreeHelper.GetChildren(element).Cast<FrameworkElement>().First();
        }
    }
}

App.xaml.cs файл, в котором происходит открытие 2 форм, 1 поверх другой, верхняя не взаимодействует с мышкой и прозрачна
using Meytes.WPF.Helpers;
using System.Windows;

namespace WpfApp8
{
    public partial class App : Application
    {
        private void Application_Startup(object sender, StartupEventArgs e)
        {
            //Открываем основное окно
            var mainWindow = new MainWindow();
            mainWindow.Show();
            //Инициализируем окно, оно должно быть обязательно AllowsTransparency=true
            var transparentWindows = new TransparentWindow()
            {
                WindowStyle = WindowStyle.None,
                AllowsTransparency=true,
                Opacity=.5,
                Owner = mainWindow,
                WindowStartupLocation = WindowStartupLocation.CenterOwner,
                Topmost = true,
            };
            //Открываем прозрачное окно
            transparentWindows.Show();
            //Включаем прозрачность
            transparentWindows.SetValue(PopupTransparentBehavior.IsPopupEventTransparentProperty, true);
        }
    }
}

App.xaml
<Application x:Class="WpfApp8.App"
             xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
             Startup="Application_Startup"/>

Главное окно MainWindow.xaml
<Window x:Class="WpfApp8.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <ListBox TextElement.FontSize="25">
        <ListBoxItem Content="Item1"/>
        <ListBoxItem Content="Item2"/>
        <ListBoxItem Content="Item3"/>
        <ListBoxItem Content="Item4"/>
        <ListBoxItem Content="Item5"/>
        <ListBoxItem Content="Item6"/>
    </ListBox>
</Window>

Прозрачное окно TransparentWindow.xaml
<Window x:Class="WpfApp8.TransparentWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Height="300" Width="300"
        Background="Transparent">
    <Window.Resources>
        <Style TargetType="{x:Type Button}" >
            <Setter Property="Margin" Value="0,0,5,5"/>
        </Style>
    </Window.Resources>
    <UniformGrid Rows="3" Columns="3" Margin="5,5,0,0" TextElement.FontSize="45">
        <Button Content="1"/>
        <Button Content="2"/>
        <Button Content="3"/>
        <Button Content="4"/>
        <Button Content="5"/>
        <Button Content="6"/>
        <Button Content="7"/>
        <Button Content="8"/>
    </UniformGrid>
</Window>
7 ноя 18, 23:06    [21727505]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Roman Mejtes, просто
жесть

Извините, если это тупой вопрос, хотя скорее всего так и есть, но я сильно недавно работаю с этими вещами, поэтому есть определенные трудности

Если у меня есть MainWindow, в этом окне кнопка, по нажатию на которую должен по центру экрана появляться прицел (как раз таки который в свою очередь должен быть "прозрачным" для кликов мыши), то как мне прикрутить к этому проекту данную вещь?
Если я правильно вас понял, то Meytes.WPF.Helpers это просто отдельный файл, который должен подключаться к проекту. Он должен быть расширения c++ или c#?

И еще такая тема, для чего нужен в вашем примере App.xaml?
7 ноя 18, 23:26    [21727517]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
посмотрите, вот накидал на коленке, может это поможет вам в реализации.
это только пример! Будут вопросы, задавайте.
внутри, проект для VS2017, и 0 вирусов, я надеюсь :)

ссылка на проект
8 ноя 18, 01:35    [21727563]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes
вот готовое решение, я проверил, всё работает:
на событие Paint без окна должно быть в разы меньше кода. Не знаю, че ты не захотел.
8 ноя 18, 07:56    [21727657]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
Petro123
Roman Mejtes
вот готовое решение, я проверил, всё работает:
на событие Paint без окна должно быть в разы меньше кода. Не знаю, че ты не захотел.
в WPF есть событие Paint? если бы оно было, что именно было бы проще через него сделать?
8 ноя 18, 10:10    [21727770]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes
в WPF есть событие Paint?
ну может onRender.... Ты его лучше знаешь чем я).

Roman Mejtes
что именно было бы проще через него сделать?

Чтобы рисовать координатную сетку или масштабную линейку на карте я делаю так:
1. Класс
MyPaintGrid
{
   MyPaintGrid(Map map) 
   {
         this. map = map;
         (this.map as UserControl). Paint += МетодРисовать;
   } 
   void МетодРисовать(,,,,, 
} 

Причем карта компонент не моя, без исходников, и это типа плагин на моей стороне.
Всё
Вроде идеально)
8 ноя 18, 10:28    [21727796]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes,
Ты ругал WinForm в сравнении с WPF.
Но в винформ одну хотелку можно сделать в 50 разных способов.
В WPF есть другой способ для сабжа?
Мне интересно. А тебе?
8 ноя 18, 10:31    [21727798]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
сделайте мне кнопку в WinForms которая будет в форме снежинки серпинского, кнопка должна изменять размер, глубину детализации и хиттеститься только в рамках фрактала и 50ю способами.
странная у вас логика?
можно ли сделать всё это другим способом, безусловно. но зачем мне это делать, мне нужно сделать только 1
8 ноя 18, 10:34    [21727803]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes
сделайте мне
ок. Я подумаю.
А тебе просьба подсказать про мой код выше. Нужен Плагин.
8 ноя 18, 10:36    [21727810]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes
но зачем мне это делать
я понял. Тебе подписка на событие render не интересна.
Удачи!
8 ноя 18, 10:38    [21727814]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes,
Это то что я ищу?

Объект DrawingVisual
DrawingVisual — Упрощенный класс, используемый для отрисовки фигур, изображений и текста. Этот класс считается упрощенным, так как не предоставляет средств для работы с разметкой и обработку событий, что повышает его производительность. Поэтому этот класс идеально подходит для фоновых рисунков или клипов.
8 ноя 18, 10:47    [21727826]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3305
я не понимаю о каком коде выше вы пишите, DrawingVisual имеет смысл использовать, когда у вас большое количество элементов на экране. Так как при >10к элементов визуального дерева, может начать тормозить UI, а
Сам я его применял. когда у меня был сложный табличный контрол на 10к ячеек в каждой из которых могло быть еще N элементов виз.дерева в 1 момент на ViewPort'е, их использование дало увеличение перфоманса процентов на 10-15% при сохранении "универсальности" применения. Но какой смысл применения, в примере, я не пойму. Всё это только усложнит реализацию.

Опишите подробнее о чем речь, создайте новую тему, если она не про прознрачность окна, обсудим.
8 ноя 18, 11:05    [21727856]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
Roman Mejtes
Но какой смысл применения, в примере, я не пойму. Всё это только усложнит реализацию.
можете показать хотя бы схематично:
- основное приложение выдает Canvas в приложение плагин (в одном решении)
- в плагине:
canvas.Children.Add(new VisualHost { Visual = drawingVisual });
- в классе есть растр 64 на 64 курсора или прицела или...
8 ноя 18, 11:25    [21727887]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
MrKoder
Member

Откуда:
Сообщений: 45
Спасибо большое всем за помощь!
Разобрался)
8 ноя 18, 21:02    [21728732]     Ответить | Цитировать Сообщить модератору
 Re: Клики сквозь форму  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38457
MrKoder
клики проходили сквозь форму.
для чего?
MrKoder
Т.е. это окно должно быть просто информационным.

ИнфоОкно в другом процессе по отношению источнику информации приложению Б?
12 ноя 18, 12:08    [21731596]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2      [все]
Все форумы / WPF, Silverlight Ответить