明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 712|回复: 5

[界面] 功能简单的块库

  [复制链接]
发表于 2026-1-10 22:48:06 | 显示全部楼层 |阅读模式

弄了一个能自己随意折腾的块库,提取当前图纸的块来进行块的插入,可以进行搜索,加强了信息密度,预览图做的小不过也能看看,名字也很小,在小屏幕笔记本上也能一下显示好几个待选,也能随着界面的大小自动排列合适数量的预览图。
方法就是用一个ScrollViewer包自定义的按钮,按钮内部可以绑定块的预览图,再绑好命令,闲的可以再优化下鼠标滚动能翻一整页的逻辑。
预览图这块高版本有自带的方法,可怜的低版本像这个2012并没有,如果不做处理,用自带的块预览图效果会很模糊,不过没关系,也有其它的方法可以生成清楚点的预览图再塞给块,只是要麻烦点,我参考的blockview,不知道各位大佬对于低版本做预览图这块有没有更好的办法。
其他什么比例角度的暂时没啥需求也就不弄了。

下面是右侧块展示区域的XAML,供参考,丢给AI说不定也就折腾出来了。
<!--  右侧自适应块展示  -->
<ScrollViewer
    x:Name="BlockScroller" Grid.Column="2" PreviewMouseWheel="BlockScroller_PreviewMouseWheel" VerticalScrollBarVisibility="Auto">
    <ItemsControl ItemsSource="{Binding 当前图纸块集合}">
        <ItemsControl.ItemsPanel>
            <ItemsPanelTemplate>
                <WrapPanel HorizontalAlignment="Stretch" Orientation="Horizontal" />
            </ItemsPanelTemplate>
        </ItemsControl.ItemsPanel>

        <ItemsControl.ItemContainerStyle>
            <Style TargetType="ContentPresenter">
                <Setter Property="HorizontalAlignment" Value="Left" />
                <Setter Property="VerticalAlignment" Value="Top" />
            </Style>
        </ItemsControl.ItemContainerStyle>

        <!--  卡片模板  -->
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <Button
                    Width="60" Height="80" Margin="2" Padding="0"
                    VerticalContentAlignment="Top" Background="#60000000" BorderBrush="#E0E0E0" BorderThickness="1"
                    Command="{Binding DataContext.InsertBlockCommand, RelativeSource={RelativeSource AncestorType=UserControl}}"
                    CommandParameter="{Binding}"
                    Cursor="Hand">
                    <Button.Style>
                        <Style BasedOn="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" TargetType="Button">
                            <Setter Property="Template">
                                <Setter.Value>
                                    <ControlTemplate TargetType="Button">
                                        <Border
                                            x:Name="border"
                                            Background="{TemplateBinding Background}"
                                            BorderBrush="{TemplateBinding BorderBrush}"
                                            BorderThickness="{TemplateBinding BorderThickness}"
                                            SnapsToDevicePixels="True">
                                            <DockPanel LastChildFill="True">
                                                <Image
                                                    Width="60" Height="60" DockPanel.Dock="Top"
                                                    Source="{Binding 块缩略图}"
                                                    Stretch="Uniform" />
                                                <TextBlock
                                                    x:Name="txt" Margin="1" FontSize="8" FontWeight="ExtraBold"
                                                    Foreground="WhiteSmoke" LineHeight="8" LineStackingStrategy="BlockLineHeight"
                                                    Text="{Binding 块名}"
                                                    TextAlignment="Center" TextWrapping="Wrap" />
                                            </DockPanel>
                                        </Border>

                                        <ControlTemplate.Triggers>
                                            <Trigger Property="IsMouseOver" Value="True">
                                                <Setter TargetName="txt" Property="FontSize" Value="9" />
                                            </Trigger>
                                        </ControlTemplate.Triggers>
                                    </ControlTemplate>
                                </Setter.Value>
                            </Setter>
                        </Style>
                    </Button.Style>
                </Button>
            </DataTemplate>
        </ItemsControl.ItemTemplate>

        <!--  空状态提示  -->
        <ItemsControl.Template>
            <ControlTemplate TargetType="ItemsControl">
                <Grid>
                    <ItemsPresenter />
                    <TextBlock
                        Margin="20" HorizontalAlignment="Center" VerticalAlignment="Center" FontWeight="ExtraBold"
                        Foreground="#000" Text="暂无块数据"
                        Visibility="{Binding Items.Count, RelativeSource={RelativeSource AncestorType=ItemsControl}, Converter={StaticResource CountToVisibilityConverter}}" />
                </Grid>
            </ControlTemplate>
        </ItemsControl.Template>
    </ItemsControl>
</ScrollViewer>

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

 楼主| 发表于 2026-1-10 23:01:04 | 显示全部楼层
论坛打开gif附件好像很慢。。。补个截图吧

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

发表于 2026-1-11 13:30:28 | 显示全部楼层
nice,学习学习
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
6666666666
回复 支持 反对

使用道具 举报

发表于 7 天前 | 显示全部楼层
其实gif和视频一样也能剪辑的,录制的时候,设置一下,还有后期处理时候调一下,gif文件会小很多
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 天前 | 显示全部楼层
tranque 发表于 2026-1-12 23:35
其实gif和视频一样也能剪辑的,录制的时候,设置一下,还有后期处理时候调一下,gif文件会小很多

在上传限制大小以内,只有3M多,不应该要转很久的圈,转出的时候已经是用的最低画质了...
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2026-1-19 16:03 , Processed in 0.180705 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表