Задать вопрос
  • Как создать область для печати А4 в WPF?

    @Brossinger Автор вопроса
    Так выкладываю правильный ответ.
    1. Правильно нужно задать соотношения сторон математика расчета разрешение.
    Ширина: (297мм / 25.4мм/дюйм) * 96 DPI = 1122 пикселей
    Высота: (210мм / 25.4мм/дюйм) * 96 DPI = 794 пикселей
    Stretch="UpOnly" - поиграйте с параметром в зависимости от результата. Но мне подходит такой вариант.

    Следовательно правильный код в XAML будет
    <Window x:Class="MoU.test_screen"
            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:svgc="http://sharpvectors.codeplex.com/svgc/"
            xmlns:local="clr-namespace:MoU"
            mc:Ignorable="d"
            Title="test_screen" Width="1880" Height="932" Background="#FF797676">
        <StackPanel Margin="15,15,15,15" Orientation="Horizontal">
            <Viewbox x:Name="Print_Area" Width="1122 " Height="794" StretchDirection="UpOnly" >
                <Border>
                    <Grid >
                        <Grid.RowDefinitions>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                            <RowDefinition Height="Auto"/>
                        </Grid.RowDefinitions>
                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                            <ColumnDefinition Width="Auto"/>
                        </Grid.ColumnDefinitions>
                        <Border Grid.Column="3" BorderBrush="Black" BorderThickness="1" >
                            <TextBlock Text="Колонка"/>
                        </Border>
                        <!-- Таблица с 2 колонками и 2 строками -->
                        <Border Grid.Row="0" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="0" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="1" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="1" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="2" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="2" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="3" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="3" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="4" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="4" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 1" Margin="5"/>
                        </Border>
                        <Border Grid.Row="5" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="5" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="6" Grid.Column="0" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 1, Строка 2" Margin="5"/>
                        </Border>
                        <Border Grid.Row="6" Grid.Column="1" BorderBrush="Black" BorderThickness="1">
                            <TextBlock Text="Колонка 2, Строка 2" Margin="5"/>
                        </Border>
    
                    </Grid>
                </Border>
            </Viewbox>
            <!-- A4 size in pixels: 793.7 x 1122.5 -->
            <Button x:Name="uiPrintButton" Content="Print" FontSize="15" Height="50" Background="Green" Click="uiPrintButton_Click"/>
        </StackPanel>
    </Window>


    2. Это правильный пересчет зоны печати. По сути Print_Area растягивается на А4.
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Media;
    
    namespace MoU
    {
        /// <summary>
        /// Interaction logic for test_screen.xaml
        /// </summary>
        public partial class test_screen : Window
        {
           
            public test_screen()
            {
                InitializeComponent();
                
            }
    
            private void uiPrintButton_Click(object sender, RoutedEventArgs e)
            {
                PrintDialog printDialog = new PrintDialog();
                printDialog.PrintTicket.PageOrientation = System.Printing.PageOrientation.Landscape;
    
                if (printDialog.ShowDialog() == true)
                {
                    // Получаем размеры области печати для альбомной ориентации
                    double scaleWidth = printDialog.PrintableAreaWidth / Print_Area.ActualWidth;
                    double scaleHeight = printDialog.PrintableAreaHeight / Print_Area.ActualHeight;
                    double scale = Math.Min(scaleWidth, scaleHeight);
    
                    // Применяем масштабирование
                    Print_Area.LayoutTransform = new ScaleTransform(scale, scale);
    
                    // Пересчитываем размеры элементов на основе масштаба
                    System.Windows.Size sz = new System.Windows.Size(printDialog.PrintableAreaWidth, printDialog.PrintableAreaHeight);
                    Print_Area.Measure(sz);
                    Print_Area.Arrange(new Rect(new System.Windows.Point(0, 0), sz));
    
                    // Печать содержимого Viewbox
                    printDialog.PrintVisual(Print_Area, "Печать Print_Area на А4 (Landscape)");
                }
            }
        }
    }
    Ответ написан
    Комментировать
  • Как сделать outline эфект на spine 2D анимации?

    @Brossinger Автор вопроса
    Нашел Решение. В общем есть такой пакет для
    После установки в настройке материала выбрать следующие параметры 64f614f4bbbb4908843868.png

    Помимо того так же есть отличный пример
    64f615110d60d536840275.png
    Ответ написан
    Комментировать
  • Как сделать проброс портов в Mikrotik при обращении из локалки?

    @Brossinger
    Много уважаем автор ответа. Есть такая проблема.
    есть два роутера mikrotik CRS125-24G-1S-IN и сервер 192.168.0.110. (условно роутер А и роутер В)
    Сеть построена следующим образом.
    Роутер А:
    1) Порт 1 - приходит интернет со статическим адресом(1.2.3.4(допустим)). 2-24 порт объединены в свитч с мастер портом 2. Поднят DHPC(192.168.0.1/24) с днс от провайдера.
    # Дефалтный маскарадинг
    Chain: src-nat
    Out-interface: ether1
    Action: masquerade
    2) Проброшены серии портов 9292 , 9090 и так далее.
    Роутер В
    1) сброшены все настройки на ноль . объединены все порты в свитч. более правил нету не создавал.

    В общем у меня выходит централизованная сеть на 40 машин в сети 192.168.0.1.

    Столкнулся со следующими проблемами:
    1) Как и у автора данного вопроса из вне до сервера возможно достучаться. из внутри ноль на массу. проделал все три ваших совета. мне почему то не помогло. глухо как в танке. Заменял 192.168.0.2 на 192.168.0.110(на сервер) и все равно не помогло
    2) почему блокируются сайты гугл фейсбук и так далее. Хотя у меня дома настроен rb750gl и все сайты топают нормально. Для меня этот нонсент. Провайдера проверял. Подключал обычный тплинк он пакеты легко пропускает. подключал к нему роутер А тоже нормально из под роутера бегают пакеты. А как только в основной интернет пускаю напрямую в А роутер. гугл сразу с фейсбуком отваливаються, Ряд сайтов банков и т.д.

    Находил что надо MTU менять на вановском порте. не помогло. Притом хочу указать что с роутера сайты пингуются. Помогите пожалуйста
    Ответ написан
    Комментировать