Skip to content

Commit 9594166

Browse files
committed
#77 Fix issue
#77 Fix issue
1 parent 4f17517 commit 9594166

File tree

16 files changed

+354
-101
lines changed

16 files changed

+354
-101
lines changed

src/WPFDevelopers.Net40/Themes/Theme.xaml

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2623,10 +2623,7 @@
26232623
<Setter Property="Template">
26242624
<Setter.Value>
26252625
<ControlTemplate TargetType="{x:Type DataGridRow}">
2626-
<Border x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
2627-
<Border.Background>
2628-
<SolidColorBrush Color="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=Background}" />
2629-
</Border.Background>
2626+
<Border x:Name="DGR_Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
26302627
<SelectiveScrollingGrid>
26312628
<SelectiveScrollingGrid.ColumnDefinitions>
26322629
<ColumnDefinition Width="Auto" />

src/WPFDevelopers.Net45x/Themes/Theme.xaml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1061,7 +1061,6 @@
10611061
<Trigger Property="IsChecked" Value="True">
10621062
<Setter TargetName="PART_Border" Property="Fill" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
10631063
<Setter TargetName="PART_Border" Property="Stroke" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
1064-
<Setter TargetName="PART_ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
10651064
</Trigger>
10661065
<MultiTrigger>
10671066
<MultiTrigger.Conditions>
@@ -1691,7 +1690,6 @@
16911690
<Trigger Property="IsChecked" Value="True">
16921691
<Setter TargetName="PART_Border" Property="Background" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
16931692
<Setter TargetName="PART_Border" Property="BorderBrush" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
1694-
<Setter TargetName="PART_ContentPresenter" Property="TextElement.Foreground" Value="{DynamicResource WD.PrimaryNormalSolidColorBrush}" />
16951693
</Trigger>
16961694
<Trigger Property="IsChecked" Value="{x:Null}">
16971695
<Trigger.EnterActions>
@@ -2626,10 +2624,7 @@
26262624
<Setter Property="Template">
26272625
<Setter.Value>
26282626
<ControlTemplate TargetType="{x:Type DataGridRow}">
2629-
<Border x:Name="DGR_Border" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
2630-
<Border.Background>
2631-
<SolidColorBrush Color="{Binding RelativeSource={RelativeSource AncestorType=DataGridRow}, Path=Background}" />
2632-
</Border.Background>
2627+
<Border x:Name="DGR_Border" Background="{TemplateBinding Background}" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" SnapsToDevicePixels="True">
26332628
<SelectiveScrollingGrid>
26342629
<SelectiveScrollingGrid.ColumnDefinitions>
26352630
<ColumnDefinition Width="Auto" />
Lines changed: 48 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,53 @@
1-
<UserControl x:Class="WPFDevelopers.Samples.ExampleViews.ScreenCutExample"
2-
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
3-
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
4-
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
5-
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
6-
xmlns:local="clr-namespace:WPFDevelopers.Samples.ExampleViews"
7-
xmlns:controls="clr-namespace:WPFDevelopers.Samples.Controls"
8-
mc:Ignorable="d"
9-
d:DesignHeight="450" d:DesignWidth="800">
1+
<UserControl
2+
x:Class="WPFDevelopers.Samples.ExampleViews.ScreenCutExample"
3+
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
4+
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
5+
xmlns:controls="clr-namespace:WPFDevelopers.Samples.Controls"
6+
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
7+
xmlns:local="clr-namespace:WPFDevelopers.Samples.ExampleViews"
8+
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
9+
d:DesignHeight="450"
10+
d:DesignWidth="800"
11+
mc:Ignorable="d">
1012
<controls:CodeViewer>
11-
<UniformGrid Rows="2">
12-
<CheckBox Content="截图时隐藏当前窗口"
13-
VerticalAlignment="Bottom" HorizontalAlignment="Center"
14-
IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ScreenCutExample}}, Path=IsChecked}"/>
15-
<Button Content="截屏" VerticalAlignment="Top" HorizontalAlignment="Center" Click="Button_Click"
16-
Margin="0,10"/>
17-
</UniformGrid>
13+
<Grid>
14+
<Grid.RowDefinitions>
15+
<RowDefinition Height="Auto" />
16+
<RowDefinition />
17+
<RowDefinition />
18+
</Grid.RowDefinitions>
19+
<Grid.ColumnDefinitions>
20+
<ColumnDefinition />
21+
<ColumnDefinition />
22+
</Grid.ColumnDefinitions>
23+
<CheckBox
24+
Margin="0,10,0,10"
25+
HorizontalAlignment="Center"
26+
Content="截图时隐藏当前窗口"
27+
IsChecked="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:ScreenCutExample}}, Path=IsChecked}" />
28+
<Button
29+
Grid.Row="1"
30+
HorizontalAlignment="Center"
31+
VerticalAlignment="Top"
32+
Click="Button_Click"
33+
Content="截屏" />
34+
<Button
35+
Grid.Row="1"
36+
Grid.Column="1"
37+
HorizontalAlignment="Center"
38+
VerticalAlignment="Top"
39+
Click="ButtonExt_Click"
40+
Content="截屏Ext"
41+
Style="{StaticResource WD.SuccessPrimaryButton}" />
42+
<Image
43+
x:Name="myImage"
44+
Grid.Row="2"
45+
Grid.ColumnSpan="2"
46+
Stretch="Uniform" />
47+
</Grid>
1848
<controls:CodeViewer.SourceCodes>
19-
<controls:SourceCodeModel
20-
CodeSource="/WPFDevelopers.SamplesCode;component/ExampleViews/ScreenCutExample.xaml"
21-
CodeType="Xaml"/>
22-
<controls:SourceCodeModel
23-
CodeSource="/WPFDevelopers.SamplesCode;component/ExampleViews/ScreenCutExample.xaml.cs"
24-
CodeType="CSharp"/>
49+
<controls:SourceCodeModel CodeSource="/WPFDevelopers.SamplesCode;component/ExampleViews/ScreenCutExample.xaml" CodeType="Xaml" />
50+
<controls:SourceCodeModel CodeSource="/WPFDevelopers.SamplesCode;component/ExampleViews/ScreenCutExample.xaml.cs" CodeType="CSharp" />
2551
</controls:CodeViewer.SourceCodes>
2652
</controls:CodeViewer>
2753
</UserControl>

src/WPFDevelopers.Samples.Shared/ExampleViews/ScreenCutExample.xaml.cs

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,37 @@ private void Button_Click(object sender, RoutedEventArgs e)
5858
private void ScreenCapturer_SnapCanceled()
5959
{
6060
App.CurrentMainWindow.WindowState = WindowState.Normal;
61+
Message.Push($"{DateTime.Now} 取消截图", MessageBoxImage.Information);
6162
}
6263

6364
private void ScreenCapturer_SnapCompleted(System.Windows.Media.Imaging.CroppedBitmap bitmap)
6465
{
66+
myImage.Source = bitmap;
6567
App.CurrentMainWindow.WindowState = WindowState.Normal;
6668
}
69+
private void ButtonExt_Click(object sender, RoutedEventArgs e)
70+
{
71+
if (IsChecked)
72+
{
73+
App.CurrentMainWindow.WindowState = WindowState.Minimized;
74+
}
75+
76+
var screenCaptureExt = new ScreenCaptureExt();
77+
screenCaptureExt.SnapCanceled += ScreenCaptureExt_SnapCanceled;
78+
screenCaptureExt.SnapCompleted += ScreenCaptureExt_SnapCompleted;
79+
}
80+
81+
private void ScreenCaptureExt_SnapCompleted(System.Windows.Media.Imaging.BitmapSource bitmap)
82+
{
83+
myImage.Source = bitmap;
84+
App.CurrentMainWindow.WindowState = WindowState.Normal;
85+
}
86+
87+
private void ScreenCaptureExt_SnapCanceled()
88+
{
89+
if (App.CurrentMainWindow.WindowState == WindowState.Minimized)
90+
App.CurrentMainWindow.WindowState = WindowState.Normal;
91+
Message.Push($"{DateTime.Now} 取消截图",MessageBoxImage.Information);
92+
}
6793
}
6894
}

src/WPFDevelopers.Shared/Controls/BubblleControl/BubbleControl.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ private static void OnItemsSourcePropertyChanged(DependencyObject obj, Dependenc
139139

140140
foreach (var item in newValue)
141141
{
142-
ctrl._items.Add(new BubblleItem { Text = item, Bg = ControlsHelper.RandomBrush() });
142+
ctrl._items.Add(new BubblleItem { Text = item, Bg = Helper.RandomBrush() });
143143
}
144144
}
145145

src/WPFDevelopers.Shared/Controls/BubblleControl/BubblleCanvas.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,11 +41,11 @@ protected override Size ArrangeOverride(Size arrangeSize)
4141
{
4242
double xNum = x + 1;
4343
xNum = _maxSize * xNum;
44-
_bubbleItemX = ControlsHelper.NextDouble(left, xNum - _size * ControlsHelper.NextDouble(0.6, 0.9));
44+
_bubbleItemX = Helper.NextDouble(left, xNum - _size * Helper.NextDouble(0.6, 0.9));
4545
var _width = _bubbleItemX + _size;
4646
_width = _width > width ? width - (width - _bubbleItemX) - _size : _bubbleItemX;
4747
_bubbleItemX = _width;
48-
_bubbleItemY = ControlsHelper.NextDouble(top, yNum - _size * ControlsHelper.NextDouble(0.6, 0.9));
48+
_bubbleItemY = Helper.NextDouble(top, yNum - _size * Helper.NextDouble(0.6, 0.9));
4949
var _height = _bubbleItemY + _size;
5050
_height = _height > height ? height - (height - _bubbleItemY) - _size : _bubbleItemY;
5151
_bubbleItemY = _height;
@@ -68,9 +68,9 @@ protected override Size ArrangeOverride(Size arrangeSize)
6868
private void ResizeItem(FrameworkElement item)
6969
{
7070
if (DoubleUtil.GreaterThanOrClose(item.DesiredSize.Width, 55))
71-
_size = ControlsHelper.GetRandom.Next(80, _maxSize);
71+
_size = Helper.GetRandom.Next(80, _maxSize);
7272
else
73-
_size = ControlsHelper.GetRandom.Next(55, _maxSize);
73+
_size = Helper.GetRandom.Next(55, _maxSize);
7474
item.Width = _size;
7575
item.Height = _size;
7676
}

src/WPFDevelopers.Shared/Controls/CropAvatar/CropAvatar.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ private void InitialImage()
171171
{
172172
vNewStartX = 0;
173173
vNewStartY = 0;
174-
var uri = ControlsHelper.ImageUri();
174+
var uri = Helper.ImageUri();
175175
if (uri == null) return;
176176
var bitmap = new BitmapImage();
177177
bitmap.BeginInit();

src/WPFDevelopers.Shared/Controls/CropImage/CropImage.cs

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -146,17 +146,18 @@ public override void OnApplyTemplate()
146146

147147
private void DrawImage()
148148
{
149-
if (Source == null)
149+
if (Source == null) return;
150+
if (_border.Visibility == Visibility.Visible)
150151
{
151152
_border.Visibility = Visibility.Collapsed;
152-
if (adornerLayer == null) return;
153+
_border.Visibility = Visibility.Visible;
154+
}
155+
if (adornerLayer != null)
156+
{
153157
adornerLayer.Remove(screenCutAdorner);
154158
screenCutAdorner = null;
155159
adornerLayer = null;
156-
return;
157160
}
158-
159-
_border.Visibility = Visibility.Visible;
160161
var bitmap = (BitmapImage)Source;
161162
bitmapFrame = ControlsHelper.CreateResizedImage(bitmap, (int)bitmap.Width, (int)bitmap.Height, 0);
162163
_canvas.Width = bitmap.Width;
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
using System;
2+
using System.Diagnostics;
3+
using System.IO;
4+
using System.Windows;
5+
using System.Windows.Interop;
6+
using System.Windows.Media.Imaging;
7+
8+
namespace WPFDevelopers.Controls
9+
{
10+
public class ScreenCaptureExt : Window
11+
{
12+
const int WM_USER = 0x03FC;
13+
const int MY_MESSAGE = WM_USER + 1;
14+
/// <summary>
15+
/// 截图完成委托
16+
/// </summary>
17+
public delegate void ScreenShotDone(BitmapSource bitmap);
18+
/// <summary>
19+
/// 截图完成事件
20+
/// </summary>
21+
public event ScreenShotDone SnapCompleted;
22+
/// <summary>
23+
/// 截图取消委托
24+
/// </summary>
25+
public delegate void ScreenShotCanceled();
26+
/// <summary>
27+
/// 截图取消事件
28+
/// </summary>
29+
public event ScreenShotCanceled SnapCanceled;
30+
31+
public ScreenCaptureExt()
32+
{
33+
Width = 0;
34+
Height = 0;
35+
Left = int.MinValue;
36+
Top = int.MinValue;
37+
WindowStyle = WindowStyle.None;
38+
ShowInTaskbar = false;
39+
ShowActivated = false;
40+
Title = "ScreenShot";
41+
Show();
42+
ShowScreenShot();
43+
}
44+
45+
protected override void OnSourceInitialized(EventArgs e)
46+
{
47+
base.OnSourceInitialized(e);
48+
var hwndSource = PresentationSource.FromVisual(this) as HwndSource;
49+
if (hwndSource != null) hwndSource.AddHook(WndProc);
50+
}
51+
52+
private IntPtr WndProc(IntPtr hwnd, int msg, IntPtr wParam, IntPtr lParam, ref bool handled)
53+
{
54+
switch (msg)
55+
{
56+
case WM_USER:
57+
GetClipboard();
58+
Close();
59+
break;
60+
case MY_MESSAGE:
61+
if (SnapCanceled != null)
62+
SnapCanceled();
63+
Close();
64+
break;
65+
}
66+
return IntPtr.Zero;
67+
}
68+
69+
void GetClipboard()
70+
{
71+
if (Clipboard.ContainsImage())
72+
{
73+
var dataObject = Clipboard.GetDataObject();
74+
if (dataObject == null) return;
75+
76+
using (var memoryStream = new MemoryStream())
77+
{
78+
var encoder = new PngBitmapEncoder();
79+
encoder.Frames.Add(BitmapFrame.Create((BitmapSource)dataObject.GetData(DataFormats.Bitmap)));
80+
encoder.Save(memoryStream);
81+
memoryStream.Position = 0;
82+
var bitmapImage = new BitmapImage();
83+
bitmapImage.BeginInit();
84+
bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
85+
bitmapImage.StreamSource = memoryStream;
86+
bitmapImage.EndInit();
87+
bitmapImage.Freeze();
88+
if (SnapCompleted != null)
89+
SnapCompleted(bitmapImage);
90+
}
91+
}
92+
}
93+
94+
void ShowScreenShot()
95+
{
96+
if (Helper.GetTempPathVersionExt != null && File.Exists(Helper.GetTempPathVersionExt))
97+
{
98+
var process = new Process();
99+
process.StartInfo.FileName = Helper.GetTempPathVersionExt;
100+
process.StartInfo.Arguments = Title;
101+
process.Start();
102+
}
103+
}
104+
}
105+
}

src/WPFDevelopers.Shared/Controls/ScreenCut/ScreenCut.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -746,7 +746,7 @@ private void DrawArrowControl(Point current)
746746
var renderOrigin = new Point(0, .5);
747747
controlArrow.RenderTransformOrigin = renderOrigin;
748748
controlArrow.RenderTransform = rotate;
749-
rotate.Angle = ControlsHelper.CalculeAngle(vPoint, current);
749+
rotate.Angle = Helper.CalculeAngle(vPoint, current);
750750
if (current.X < rect.Left
751751
||
752752
current.X > rect.Right

0 commit comments

Comments
 (0)