avalonia 控件-其他

1-TextBlock文本过长,换行与不换行显示

换行:TextWrapping=“Wrap”
不换行使用省略号表示:TextWrapping=“NoWrap” TextTrimming=“CharacterEllipsis”
默认TextWrapping=“NoWrap”

<TextBlock Text="{Binding code} ToolTip.Tip="{Binding Bmc}" TextTrimming="CharacterEllipsis"/>

2-窗体自定义无边框

SystemDecorations.BorderOnly窗体无边框,不能拖动
this.SystemDecorations = SystemDecorations.BorderOnly;

3-后台代码生成xaml页面控件

1-添加NuGet包引用,Avalonia.Markup.Xaml.Loader

在这里插入图片描述

2-使用

 string imageXaml = @"<Image xmlns='https://github.com/avaloniaui' Name='img' Stretch='Uniform' Width='22' Height='22'>
<DrawingImage Drawing = '{StaticResource DrawingGroup}'/> 
</Image>";               
          
if (!string.IsNullOrEmpty(imageXaml))
 {
    var image = (Image)AvaloniaRuntimeXamlLoader.Load(imageXaml);
    btn.Content = image;
 }

4-设置字体颜色

 using Avalonia.Media;
              
 TextBlock1.Foreground = SolidColorBrush.Parse("#3290FA");        
 TextBlock1.Foreground = Brushes.Red;

5-跨平台的平面图形处理(Syetem.Drawing)用包 SkiaSharp

using SkiaSharp;
using SkiaSharp.QrCode;
//
byte[] imgData;int width , height;
SKImage skimage = SKImage.FromEncodedData(imgData);
SKImageInfo skimageInfo = skimage.Info;
SKBitmap skbitmap = new SKBitmap(skimageInfo);
var colcorType = skbitmap.ColorType;
skimageInfo = new SKImageInfo(width, height, colcorType);
skbitmap = skbitmap.Resize(skimageInfo, SKFilterQuality.High);
//获取像素点
SKColor color = skbitmap.GetPixel(x, y);

    using SkiaSharp;
    using SkiaSharp.QrCode;
    
    /// <summary>
    /// 生成二维码
    /// </summary>
    /// <param name="path">图片路径</param>
    /// <param name="wsid">二维码内容</param>
    public static void BuildQRCode(String path, String wsid, Int32 width, Int32 height)
    {
        using var generator = new QRCodeGenerator();
        var qr = generator.CreateQrCode(wsid, ECCLevel.H, true);
        var info = new SKImageInfo(width, height);
        using var surface = SKSurface.Create(info);
        var canvas = surface.Canvas;
        canvas.Render(qr, info.Width, info.Height);
        using var image = surface.Snapshot();
        using var data = image.Encode(SKEncodedImageFormat.Png, 100);
        using var stream = File.OpenWrite(path);
        data.SaveTo(stream);
    }

6-获取控件内容截图

using Avalonia;
using Avalonia.Media.Imaging;

 MemoryStream memoryStream = new MemoryStream();
 using (var bitmap = new RenderTargetBitmap(new PixelSize(Convert.ToInt32(TextBox1.Bounds.Width),  Convert.ToInt32(TextBox1.Bounds.Height)), new Vector(96, 96)))
            {
                bitmap.Render(TextBox1);
                bitmap.Save(memoryStream);
            }
File.WriteAllBytes(file, memoryStream.ToArray());

7-Grid代码设置行列

Panel panel1 = new Panel();

Grid.SetRow(panel1 , 3);
Grid.SetColumn(panel1, 1);
Grid.SetColumnSpan(panel1, 2);
//或者
panel1.SetValue(Grid.RowProperty, 3);
panel1.SetValue(Grid.ColumnProperty, 1);
panel1.SetValue(Grid.ColumnSpanProperty, 2);

//设置所属父控件
grid1.Children.Add(panel1 );

8-后台代码设置控件样式

Button btn = new Button();
btn.Classes.Add("ImageStyle");
btn.HorizontalAlignment = HorizontalAlignment.Right;
btn.VerticalAlignment = VerticalAlignment.Center;
btn.BorderThickness = new Thickness(0);
btn.BorderBrush = new SolidColorBrush(Colors.Transparent);
btn.Width = 20;
btn.Margin = new Thickness(10, 0, 0, 0);

9-窗体阴影

WPF会提供Effect属性
Avalonia的控件阴影效果只能使用Border上的BoxShadow属性
每个BoxShadow内部属性依次是OffsetX(X轴位移),OffsetY(Y轴位移),Blur(模糊程度),Spread(扩展范围),Color(颜色),IsInset(是否内阴影,此处在XAML上设置无效,需要代码设置)

<Border Height="150" Margin="10" BoxShadow="0 0 10 4 #ccc" />
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Avalonia是一种用于构建跨平台用户界面的开源框架。导航控件Avalonia中的一种重要控件,用于在不同页面之间进行导航操作。 Avalonia的导航控件允许我们在应用程序中创建多个页面,并且能够在这些页面之间进行平滑的切换。导航控件提供了一种结构化的方式来组织和管理应用程序的不同界面。通过导航控件,我们可以通过简单的命令或代码逻辑来实现页面的导航和跳转。 导航控件通常由两个主要组件组成:导航器和页面容器。导航器负责维护当前页面的状态,并提供导航操作的方法和事件。页面容器用于显示和管理不同的页面。当我们进行页面导航时,导航器会负责加载、显示和销毁页面。 对于使用Avalonia导航控件的应用程序,我们可以在页面间使用导航器提供的方法来切换页面,这样可以实现应用程序的整体流程控制。例如,我们可以使用导航控件在登录页面和主页面之间进行导航,或者在主页面的不同子页面之间进行导航。 此外,Avalonia导航控件还可以与其他控件一起使用,以实现更复杂的用户界面。例如,我们可以将导航控件和菜单控件结合使用,以创建具有导航功能的应用程序菜单。我们也可以将导航控件和数据绑定一起使用,以实现基于数据驱动的页面导航。 总而言之,Avalonia导航控件是一种实用的工具,可以帮助我们在Avalonia应用程序中有效地管理和导航页面,提供良好的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值