c#和WPF
文章平均质量分 57
工作中自学记录
陆沙
诚以待己,惜物爱人
展开
-
pythonnet-C#调用python脚本-含matplotlib+biopython
pythonnet-c#直接调用python脚本原创 2024-08-27 17:49:17 · 1220 阅读 · 0 评论 -
python-调用c#代码
python调用c#原创 2024-08-06 09:54:17 · 570 阅读 · 0 评论 -
C#-读取测序数据的ABI文件并绘制svg格式峰图
无原创 2024-07-30 17:22:42 · 743 阅读 · 0 评论 -
wpf-多个用户控件不响应
wpf自定义的用户控件不响应的解决思路原创 2023-02-14 17:23:37 · 262 阅读 · 0 评论 -
wpf-ListView中放置可动态调节范围的刻度尺
listview的灵活使用原创 2022-12-08 14:06:29 · 751 阅读 · 0 评论 -
C#通过dll调用带参数的C++代码:传递字符串、返回int和int数组
c#调用c++代码原创 2022-10-26 17:36:09 · 2231 阅读 · 0 评论 -
wpf-窗口设计-常用小技巧-保持更新
wpf-窗口设计时遇到的小问题原创 2022-08-09 17:00:27 · 631 阅读 · 0 评论 -
wpf-纯色背景的控件变成半透明的原因及解决方案
纯色背景问题原创 2022-07-29 10:56:29 · 723 阅读 · 0 评论 -
JavaScript到c#-代码改写中遇到的坑-substring
js改写为c#中遇到的问题原创 2022-06-27 10:47:08 · 144 阅读 · 0 评论 -
JavaScript-RegExp对象的简单使用+与c#对比
js正则搜索改为c#原创 2022-06-15 11:52:27 · 120 阅读 · 1 评论 -
c#-正则表达式查找子串-重叠和非重叠
MatchCollection找到的是非重叠子串。举个例子:seq = “acttcttcg” regex = “ctt[ca]”,也就是说,要匹配cttc或者ctta。那么非重叠的匹配,只能找到第一个cttc(idx=1);重叠的匹配方式,则能找到两个cttc(idx=1和idx=4)。using System.Text.RegularExpressions;// seq和regex都是字符串// 非重叠子串MatchCollection matches = Regex.Matches(seq原创 2022-04-06 17:37:18 · 767 阅读 · 0 评论 -
wpf-调用简单的js代码
本来是想调用复杂js代码的(懒得看懒得重写),结果引用的时候发现要改很多,所以放弃了。这里暂时记录下:添加引用c#调用js代码需要添加一个com引用:Microsoft Script Control 1.0使用using MSScriptControl;namespace xxxx.tools{ class MutateDNA:CodingScheme { public MutateDNA() { base.Init();原创 2022-03-15 16:50:17 · 2044 阅读 · 0 评论 -
c#-List<T>的Add()和Append()的区别
今天遇到一个bug:往List< double>里加元素,结果加了半天,长度还是0。。。最后发现是用了Append而不是AddList<double> d = new List<double>();for (int i = 0; i < 10; i++){ d.Append(0);}Console.WriteLine(d.Count); // 是0换到Add就可以正确添加元素了。IEnumarable Append(this IEnumera原创 2021-11-18 13:51:07 · 4747 阅读 · 0 评论 -
wpf-利用装饰器制作 彩色字体+可选中+可复制 的textblock
效果如下图所示:实现要点:彩色字体可以用TextBlock的Run实现“可选中”可以通过装饰器实现注意鼠标事件处理前台<ScrollViewer Width="400" x:Name="colorScrollViewer" HorizontalScrollBarVisibility="Visible" > <TextBlock x:Name="colorSeq" ScrollViewer.CanContentScroll="True"原创 2021-11-02 14:42:22 · 2079 阅读 · 1 评论 -
wpf-textblock-超长字符串nowrap仍自动折断问题
这个问题困扰了我好久。很奇葩。网上常见的讨论是关于如何实现让长字符串自适应窗口大小以自动折断效果的讨论。一般帖子会告诉你,把textblock的HorizontalAlignment设为"Stretch"把TextWrapping设为"NoWrap",把Height设大一点,那么textblock就可以占满窗口并自动换行了。就像下面这种设置:<TextBlock x:Name="colorSeq" FontSize="15" FontFamily="Courier New" Horizonta原创 2021-11-02 14:26:05 · 389 阅读 · 0 评论 -
wpf-折线图绘制2-oxyplot-4-修饰图像(不重绘)
之前写过一篇,用的是oxyplot的annotation实现的:https://blog.csdn.net/pxy7896/article/details/120490130这篇不用annotation,也不用刷新图像,所以响应速度更快,且可以自定义提示。前台首先在绘图区放一个Canvas。<Grid>... <oxy:PlotView x:Name="myPlot" Model="{Binding Path= SimplePlotModel}" Grid.Row="0"原创 2021-10-19 15:57:23 · 637 阅读 · 0 评论 -
wpf-oxyplot-坐标轴标签只显示一部分(超过5k不显示)
问题描述绘图数据中,x的取值范围大概是0~20k,但是x轴只显示到5000,后面就不再显示了。如上图所示,AreaSeries还是继续绘制的,但是x轴的label大于5000就不显示了。labelFormatter是这么写的,可以看出只到5000LabelFormatter = delegate(double x) { if (x > 5000) { return "$"; } if (x == 0) { return "0";原创 2021-10-11 16:23:20 · 1966 阅读 · 0 评论 -
wpf-折线图绘制2-oxyplot-3-修饰图像(注释)
第一篇:基础、参考、简单设置 wpf-折线图绘制2-oxyplot-1第二篇:图和轴设置、简单控制 wpf-折线图绘制2-oxyplot-2这篇主要想写Annotation。比如下图这种,浅蓝色bar就是RectangleAnnotation,可以为每个点都加一个Annotation,点击(或别的行为)某点时就显示它带的Annotation。这种效果的实现思路是:点击某点时,计算坐标,如果在合法范围就清空Annotations,然后构建新的Annotation,加入列表,然后刷新图像。挺简单的哈原创 2021-09-28 16:34:04 · 1628 阅读 · 0 评论 -
wpf-折线图绘制2-oxyplot-2
上一篇在:wpf-折线图绘制2-oxyplot-1设置图本身IsLegendVisible = true; // 是否显示图例PlotAreaBorderColor = OxyColors.Transparent; // 图边界的颜色这些都是model层的设置,对应上一篇,就是_viewModel.SimplePlotModel的属性。设置坐标轴简单示例LinearAxis xAxis = new LinearAxis() { Position = AxisPosition.Bott原创 2021-09-24 09:54:44 · 1666 阅读 · 0 评论 -
wpf-折线图绘制2-oxyplot-1
关于折线图,最终我还是放弃了InteractiveDataDisplay.WPF。原因是:1.资料好少,我不会改;2.自定义坐标轴始终搞不出来。最终我换了oxyplot,但还是感觉emmm资料不够(文档好烂啊,也可能是我读得不够细致)。一些内容还是去扒了官方示例才搞清楚的。不过总算折腾得差不多了,所以记录一下注意事项。基础安装NuGet安装文档和参考资料官方文档:https://oxyplot.readthedocs.io/en/latest/introduction/index.html原创 2021-09-23 10:42:43 · 3202 阅读 · 2 评论 -
wpf-折线图绘制1
背景【问题描述】我想绘制一个折线图,包含多条折线,每条的数据量大概在1w~10w之间,要求1.可以流畅拖动 2.某些位置可以显示数值 3.放大缩小不会严重卡顿 4.不要收费。【工具调研】(没记录出处,一般来自用户手册或博客)Drawing Visual:不提供布局/事件处理,适合绘制背景或剪贴画Live-charts:数据量>2k可能会卡顿Scicharts:基本可以满足我的需求,但是收费解决方案InteractiveDataDisplay.WPF-v1.0安装的话直接NuGet安原创 2021-09-13 17:28:37 · 2390 阅读 · 0 评论 -
c#-用c#重写python的struct包-简化版
abi文件解析。重写python的struct包原创 2021-09-02 10:53:36 · 419 阅读 · 0 评论 -
C#-使用IronPython调用python代码
先说结论IronPython是一个帮助c#引用python代码的插件/库。但是,由于我的python代码中用到matplotlib和biopython,而这两个包都需要numpy,可是IronPython完全不支持numpy,所以我最终放弃了这个做法。因此本文只贴最最最简单的例子。环境win10 + vs 2019 + netframework 4.7.2实例首先在工具-NuGet包管理器中搜索IronPython,安装。我装的版本是 2.7.11。这里我第一次傻X了,因为IronPython原创 2021-08-26 13:40:09 · 2221 阅读 · 1 评论 -
wpf-ListView加载缓慢的一种解决方法
问题描述我的项目使用AvalonDock,导入源文件后,点击某个标签页,需要过几秒钟才能打开该页(程序似乎“死机”了)。这个页面的类型是avalondock:LayoutAnchorable,里面有一个ListView,大概有几百条数据;而且每个ListView的条目中,又有一个数据量(< 100)不定的ItemsControl。我想可能是ListView加载太慢才导致了“死机”。解决方案为ListView开启虚拟化。原创 2021-08-04 13:24:03 · 2309 阅读 · 0 评论 -
wpf-转载-以绘制gif的方式提示用户程序正在加载
参考:https://www.cnblogs.com/miketwais/articles/WPF_Loading.html效果是一个gif用户控件LoadingWaitLoadingWait.xaml.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows;using Sy原创 2021-09-13 17:17:52 · 230 阅读 · 0 评论 -
wpf-为TextBox设置部分背景
最初方案最开始我想的是放一个矩形,调整margin和width,盖住就好了。写完我感觉我傻逼了,因为这样的话,TextBox的内容是无法复制的。。。不过倒是get了如何用LinearGradientBrush填充单一色块。<Grid Grid.Row="1" Height="200"> <Grid.RowDefinitions> <RowDefinition Height="auto"/> <RowDefinition原创 2021-08-02 13:14:24 · 1183 阅读 · 0 评论 -
wpf-自定义进度条练习
项目需要自定义进度条,这里记录一下。参考:官方文档基本修改流程在设计窗口放一个slider,然后右键,编辑样式 → 编辑副本。我把资源放到App.xaml里,改写各部分(参见后文),然后引用:<Slider Width="400" Style="{DynamicResource 样式名字}"/>RepeatButton我觉得RepeatButton标注的是有点歧义的。比如我这里给RepeatButton写个样式:<Style x:Key="ArrowRepeatBut原创 2021-07-29 09:14:54 · 404 阅读 · 0 评论 -
wpf-绘制文字:DrawText和DrawGlyphRun
先上效果:上面的Hello,world是DrawGlyphRun绘制的,下面的hello是DrawText绘制的。绘制的结果都是不能复制的。前台<local:CanvasCustom x:Name="myCanvas"/>后台class CanvasCustom : Canvas { protected override void OnRender(DrawingContext dc) { base.OnRender(dc); dc.D原创 2021-07-21 09:51:53 · 2480 阅读 · 0 评论 -
wpf-NLog设置简单日志:文件输出和前台输出
参考:https://blog.csdn.net/lordwish/article/details/103059254输出日志到文件使用NLog.Config。首先去Nuget管理器搜索并安装NLog.Config(包含NLog,且容易编写配置文件)。装完有两个文件:使用NLog.config进行配置: <targets> <!-- add your targets here See https://github.com/nlog/NLog/wiki原创 2021-07-14 10:28:14 · 6149 阅读 · 3 评论 -
wpf-鼠标点击事件-单击左键画连续线段点击右键停止
问题描述希望在图片上画一些头尾相连的线段。单击左键绘图开始,单击右键绘图停止。如下图所示。解决方案前台<Window x:Class="TestAvalon.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="htt原创 2021-07-05 10:48:19 · 578 阅读 · 0 评论 -
wpf-将TextBox中选定的文本内容自动复制到剪贴板
问题描述我想在左键选中,复制序列的时候可以把序列本身和它的互补序列一起复制出来。(互补的规则是:A-T C-G。中学生物基础)比如:下图选完之后去记事本粘贴,出来的就是GCCACACGGTGT解决方案利用SelectionChanged确认被选中的内容,然后计算出互补序列,拼接一下,修改剪贴板的内容即可。前台:这里的TextBoxTop和TextBoxBottom是继承TextBox的类,我没做修改,弄这两个纯粹是因为我页面上TextBox太多了,我怕不好定位。。Courier New原创 2021-07-01 16:33:47 · 1397 阅读 · 0 评论 -
wpf-ComboBox下拉菜单简单使用
问题描述我有两个combox,都需要以列表作为数据源,其中一个还涉及显示时的转换(后台是“+/-/ ”,前台则要显示“正向/反向/无方向”)。本篇涉及数据源的绑定和后台获取结果。解决方案前台 <Window.Resources> <local:DirectionToZhConverter x:Key="dir2zh"/> </Window.Resources><!--这个需要转换--><ComboBox Gri原创 2021-06-24 15:26:11 · 2390 阅读 · 0 评论 -
wpf-右键菜单简单使用
在窗口Window下的Window.Resources标签下写右键菜单的内容,例如: <Window.Resources> ··· <ContextMenu x:Key="GraphContxtMenu"> <MenuItem Header="XXX" Click="OnXXXX"/> <Separator/> <MenuItem Header="刷新原创 2021-06-21 10:15:35 · 668 阅读 · 0 评论 -
wpf-vs2019+win10打包项目(失败N次终于成功嘤嘤嘤)
win10,wpf打包原创 2021-03-11 12:05:41 · 2520 阅读 · 9 评论 -
wpf-文件和图像的路径问题填坑
参考:https://www.cnblogs.com/hanke123/p/5940595.html文件路径目录结构:之前使用MoonPdfLib展示pdf时(这个资料很多,直接搜索可得),源文件路径用的是:string handBookPath = "pack://application:,,,/Resources//data//demo-handbook.pdf";因此在读xml时我天真地以为这样可以:string defaultPath = "pack://application:,,原创 2021-03-10 14:40:37 · 514 阅读 · 1 评论 -
wpf-查找指定类型的父元素/子元素
using System;using System.Collections.Generic;using System.Windows;using System.Windows.Media;namespace Demo{ /// <summary> /// 与wpf本身相关的工具 /// </summary> public class WpfTools { /// <summary> ///原创 2021-03-03 15:21:45 · 740 阅读 · 1 评论 -
wpf-截取屏幕上指定区域和截取指定控件并指定位置存储
private void OnMenuExportGraph(object sender, RoutedEventArgs e){ if (_isLoaded == false) { MessageBox.Show("请先导入文件", "Error", MessageBoxButton.OK, MessageBoxImage.Error); } else { int w = (int)this.Width; int h原创 2021-03-01 16:22:28 · 1365 阅读 · 0 评论 -
c#-XML与实体对象的相互转换及LINQ查询XML
题目看起来像大杂烩啊,其实在项目里是同一部分的,都是处理XML相关的事情。XML与实体对象的互相转换 // xml序列化公共处理类 public class XmlSerializeHelper { // 实体对象->XML /* 可能有的报错:没有 Unicode 字节顺序标记 * 处理:<?xml version="1.0" encoding="utf-16"?> 删除encoding="utf-16"原创 2021-02-24 10:09:39 · 462 阅读 · 0 评论 -
wpf-鼠标点击/进入按钮时展示列表,移出时隐藏列表
要实现的效果大概是:不点击不经过时否则我的思路是先做一个button,然后在button上加一个MouseEnter和Click事件。下面摆一个ListView,加一个MouseLeave事件。这些事件控制的是ListView的Visibility。数据绑定部分省略。无边框带下划线的按钮<Button SnapsToDevicePixels="True" Background="Transparent" Height="30" Width="150" BorderBrush="Trans原创 2021-02-20 15:11:18 · 1028 阅读 · 0 评论 -
wpf-AvalonDock-使用技巧总结
LayoutAnchorable展示时的宽度开始时LayoutAnchorable是隐藏的,控制展示时的宽度用<avalondock:LayoutAnchorable Title="描述信息" AutoHideWidth="300">原创 2021-02-18 10:42:54 · 890 阅读 · 0 评论