diff --git a/Plain Craft Launcher 2/Controls/MyImage.xaml b/Plain Craft Launcher 2/Controls/MyImage.xaml
new file mode 100644
index 0000000..b0fa06a
--- /dev/null
+++ b/Plain Craft Launcher 2/Controls/MyImage.xaml
@@ -0,0 +1,7 @@
+
+
+
\ No newline at end of file
diff --git a/Plain Craft Launcher 2/Controls/MyImage.xaml.vb b/Plain Craft Launcher 2/Controls/MyImage.xaml.vb
new file mode 100644
index 0000000..9f4d934
--- /dev/null
+++ b/Plain Craft Launcher 2/Controls/MyImage.xaml.vb
@@ -0,0 +1,32 @@
+Public Class MyImage
+
+ '自定义属性
+ Public Uuid As Integer = GetUuid()
+ Private _Uri As String = ""
+
+ Public Property Source As String
+ Get
+ Return _Uri
+ End Get
+ Set(value As String)
+ _Uri = value
+ RefreshImage()
+ End Set
+ End Property '显示文本
+ Public Shared ReadOnly SourceProperty As DependencyProperty = DependencyProperty.Register("Source", GetType(String), GetType(MyImage), New PropertyMetadata(New PropertyChangedCallback(
+ Sub(sender As DependencyObject, e As DependencyPropertyChangedEventArgs)
+ If Not IsNothing(sender) Then
+ CType(sender, MyImage)._Uri = e.NewValue.ToString()
+ CType(sender, MyImage).RefreshImage()
+ End If
+ End Sub)))
+
+ Public Sub RefreshImage()
+ If Me Is Nothing Then Exit Sub
+ Try
+ PanContent.Source = New MyBitmap(_Uri.ToString())
+ Catch ex As Exception
+ Log(ex, "刷新图片内容失败")
+ End Try
+ End Sub
+End Class
diff --git a/Plain Craft Launcher 2/Modules/Base/MyBitmap.vb b/Plain Craft Launcher 2/Modules/Base/MyBitmap.vb
index e60d27a..8a0277a 100644
--- a/Plain Craft Launcher 2/Modules/Base/MyBitmap.vb
+++ b/Plain Craft Launcher 2/Modules/Base/MyBitmap.vb
@@ -64,24 +64,29 @@ Public Class MyBitmap
BitmapCache.Add(FilePathOrResourceName, Pic)
End If
Else
+ Dim tempFile = PathTemp & "Cache\MyImage\" & GetHash(FilePathOrResourceName)
+ If FilePathOrResourceName.StartsWith("http") Then
+ NetDownload(FilePathOrResourceName, tempFile, True)
+ FilePathOrResourceName = tempFile
+ End If
'使用这种自己接管 FileStream 的方法加载才能解除文件占用
Using InputStream As New FileStream(FilePathOrResourceName, FileMode.Open)
- '判断是否为 WebP 文件头
- Dim Header(1) As Byte
- InputStream.Read(Header, 0, 2)
- InputStream.Seek(0, SeekOrigin.Begin)
- If Header(0) = 82 AndAlso Header(1) = 73 Then
- '读取 WebP
- If Is32BitSystem Then Throw New Exception("不支持在 32 位系统下加载 WebP 图片。")
- Dim FileBytes(InputStream.Length - 1) As Byte
- InputStream.Read(FileBytes, 0, FileBytes.Length)
- Dim Decoder As New Imazen.WebP.SimpleDecoder()
- Pic = Decoder.DecodeFromBytes(FileBytes, FileBytes.Length)
- Else
- Pic = New System.Drawing.Bitmap(InputStream)
- End If
- End Using
- End If
+ '判断是否为 WebP 文件头
+ Dim Header(1) As Byte
+ InputStream.Read(Header, 0, 2)
+ InputStream.Seek(0, SeekOrigin.Begin)
+ If Header(0) = 82 AndAlso Header(1) = 73 Then
+ '读取 WebP
+ If Is32BitSystem Then Throw New Exception("不支持在 32 位系统下加载 WebP 图片。")
+ Dim FileBytes(InputStream.Length - 1) As Byte
+ InputStream.Read(FileBytes, 0, FileBytes.Length)
+ Dim Decoder As New Imazen.WebP.SimpleDecoder()
+ Pic = Decoder.DecodeFromBytes(FileBytes, FileBytes.Length)
+ Else
+ Pic = New System.Drawing.Bitmap(InputStream)
+ End If
+ End Using
+ End If
Catch ex As Exception
Pic = My.Application.TryFindResource(FilePathOrResourceName)
If Pic Is Nothing Then
diff --git a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
index 1cc6a70..7164262 100644
--- a/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
+++ b/Plain Craft Launcher 2/Pages/PageLaunch/PageLaunchRight.xaml
@@ -8,6 +8,7 @@
+
Designer
+
+ MyImage.xaml
+
@@ -191,9 +194,6 @@
MyIconTextButton.xaml
-
-
-
@@ -381,6 +381,10 @@
PageSpeedRight.xaml
+
+ MSBuild:Compile
+ Designer
+
Designer
MSBuild:Compile
@@ -478,7 +482,6 @@
FormMain.xaml
Code
-
MSBuild:Compile
Designer
@@ -913,7 +916,6 @@
-