我试图使用switch case
而不是If Else
声明,其中我必须首先检查字符串的长度,并根据我必须做出它的情况.
switch (mystring.length)
{
case <=25:
{
//do this
break;
}
case <50:
{
//do this
break;
}
default:
break;
}
Run Code Online (Sandbox Code Playgroud)
这是我想要做的一些事情,但无法获得如何放在<25
案例前面,因为根据开关案例规则它是不合适的.
我正在创建一个简单的应用程序,以显示多个图像一个接一个.在WPF中,我使用了相当于图像数量的画布数量,并将这些画布添加到主画布中.在每个画布中使用Image控件,我和我一起上传了图像,看起来很不错.
现在,我试图在Windows窗体中执行相同的操作.我尝试使用Panel(作为WPF中的主画布)并使用Panel_Paint事件在其上绘制图像.没事.但是我需要添加一些内容(因为我在WPF中添加了多个画布),但是没有任何攻击.我计划了几个面板,但是他们都需要Panel_Paint来绘制图像.这是一些难以维护的......还有其他想法吗?
我有图像流,我通过下面的代码将其转换为图像
Image imagefromstream = Image.FromStream(stream);
Run Code Online (Sandbox Code Playgroud)
当我在图形中绘制此图像时,它会绘制图像.
但是,如果我在绘制图形后处理流,则不会绘制图像.
任何人都可以帮助我处理图像流
我有 10 个System.Drawing.Image
。我需要将它们添加到FixedDocument
. 我尝试了下面的代码,并且所有 10 页只包含第一张图像的固定文档被生成。
FixedDocument doc = new FixedDocument();
BitmapSource[] bmaps = new BitmapSource[10];
System.Drawing.Image[] drawingimages = //I have System.Drawing.Image in a array
for (int i = 0; i < 10; i++)
{
Page currentPage = this.Pages[i];
System.Drawing.Image im = drawingimages[i];
im.Save(i + ".png");
Stream ms = new MemoryStream();
im.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
var decoder = BitmapDecoder.Create(ms, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.OnDemand);
ImageSource imgsource = decoder.Frames[0];
bmaps[i] = imgsource as BitmapSource;
}
foreach (BitmapSource b in bmaps)
{
PageContent …
Run Code Online (Sandbox Code Playgroud) 我试过这种方式从数据表读取数据是否还有其他更好的方法来存储列表中的数据(以减少内存使用).
代码:
foreach (System.Data.DataRow row in table.Rows)
{
Myclassdef data = new Myclassdef();
data.Data = new Dictionary<string, object>();
foreach (DataColumn columninfo in table.Columns)
{
object value = row[columninfo.ColumnName];
Myclassdef.Data.Add(columninfo.ColumnName, value);
}
}
Run Code Online (Sandbox Code Playgroud) 我完全厌倦了添加Rectangle
路径图.下面是我尝试过的代码,但它没有正确的结果Rectangle
:
PathGeometry geom = new PathGeometry();
Geometry g = new RectangleGeometry(myrectangel);
geom.AddGeometry(g);
PathFigureCollection collection = geom.Figures;
pathfigure = collection[0];
Run Code Online (Sandbox Code Playgroud)
还有其他方法吗?
我正在使用面板在Windows窗体中显示图像我在Panel_Paint事件的面板中绘制图像,如下所示:
Graphics g = panel1.CreateGraphics();
Image im = new Bitmap(@"../../Data/#3_Page2.PNG");
g.DrawImage(im,new Point(10,10));
Run Code Online (Sandbox Code Playgroud)
现在,图像按照我的预期绘制,图像底部的某些部分不显示,因为它的高度大于表格高度.我现在添加了VScrollBar.如何在VScrollBar的帮助下使该面板查看图像的其余部分.
我正在加载和卸载图像Canvas
.我使用下面的代码加载Image
.
在加载之前我Image
的内存消耗是14.8MB.
Canvas c = new Canvas();
Image im = new Image();
ImageSource src = new BitmapImage(new Uri(@"E:Capture.png"));
im.Source = src;
im.Height = 800;
im.Width = 800;
c.Children.Add(im);
homegrid.Children.Add(c); //homegrid is my grid's name
Run Code Online (Sandbox Code Playgroud)
在Image
正确显示和内存消耗目前是20.8MB.然后我Image
通过以下代码卸载:
foreach (UIElement element in homegrid.Children)
{
if (element is Canvas)
{
Canvas page = element as Canvas;
if (page.Children.Count > 0)
{
for (int i = page.Children.Count - 1; i >= 0; i--)
{
if …
Run Code Online (Sandbox Code Playgroud) c# ×8
wpf ×6
image ×3
canvas ×2
panel ×2
winforms ×2
.net ×1
datatable ×1
graphics ×1
memory-leaks ×1
pathgeometry ×1
rectangles ×1
scrollbar ×1
stream ×1