c#将int转换成size
时间: 2024-09-29 08:13:11 浏览: 10
在C#中,如果你有一个`int`类型的值,并想将其转换为.NET框架中的`Size`类型,通常`Size`是用来表示尺寸或大小的,比如长度、宽度和高度,它通常会关联到`System.Drawing.Size`或`System.Collections.Generic.List<T>.Capacity`这样的上下文。你需要先确保这个`int`能够合理地表示尺寸,然后可以这样做:
```csharp
int value = ...; // 你要转换的整数值
Size size = new Size(value, value); // 如果是两个维度相等的情况
```
如果`int`代表的是容量,则可以直接赋给`Capacity`属性:
```csharp
List<int> list = new List<int>(value);
```
然而,如果你只是简单地想把`int`当作`Size`的一个维度,而另一个维度默认为0或1,那么你不需要进行显式的转换,因为`Size`构造函数允许单维初始化:
```csharp
Size size = new Size(value, 0); // 单一维度的Size
```
相关问题
void Caliper::DifferenceFilter(const size_t &_filterSize) { std::vector<int> filter(2 * _filterSize + 1, 1); for (size_t i = 0; i < _filterSize; ++i) { filter[i] = -1; filter[2 * _filterSize - i] = -1; } filter[_filterSize] = 0; pathPixelValueAfterFilter.assign(pathPixelValue.begin(), pathPixelValue.end()); for (size_t j = _filterSize; j < pathPixelValue.size() - _filterSize; ++j) { double sum = 0.0; for (size_t i = 0; i < filter.size(); ++i) { sum += pathPixelValue.at(j - _filterSize + i) * filter.at(i); } pathPixelValueAfterFilter.at(j) = static_cast<int>(sum); } }请用 OpenCvSharp4.6来编写成c#代码
以下是使用 OpenCvSharp4.6 编写的 C# 代码版本:
```csharp
using OpenCvSharp;
using System.Collections.Generic;
class Caliper
{
public List<int> pathPixelValue;
public List<int> pathPixelValueAfterFilter;
public void DifferenceFilter(int filterSize)
{
List<int> filter = new List<int>(2 * filterSize + 1);
for (int i = 0; i < filterSize; ++i)
{
filter.Add(-1);
filter.Add(1);
}
filter.Add(0);
pathPixelValueAfterFilter = new List<int>(pathPixelValue);
for (int j = filterSize; j < pathPixelValue.Count - filterSize; ++j)
{
double sum = 0.0;
for (int i = 0; i < filter.Count; ++i)
{
sum += pathPixelValue[j - filterSize + i] * filter[i];
}
pathPixelValueAfterFilter[j] = (int)sum;
}
}
}
```
这段代码与原始代码的实现基本一致,主要区别在语法上。C# 中的 List 类似于 C++ 中的 vector,但是需要使用 new 进行实例化。C# 中没有自动类型转换,需要使用强制类型转换,例如 `(int)sum`。此外,在 C# 中,变量名需要使用驼峰命名法。
XPS如何通过C#代码转换成PDF
你可以使用iTextSharp库来实现将XPS转换为PDF的操作。以下是一个简单的C#代码示例:
```csharp
using System.IO;
using iTextSharp.text;
using iTextSharp.text.pdf;
public void ConvertXpsToPdf(string xpsFilePath, string pdfFilePath)
{
using (Stream xpsStream = new FileStream(xpsFilePath, FileMode.Open, FileAccess.Read))
{
using (FileStream pdfStream = new FileStream(pdfFilePath, FileMode.Create, FileAccess.Write))
{
// Create a new iTextSharp document
Document pdfDoc = new Document();
// Create a PdfWriter that listens to the document
PdfWriter writer = PdfWriter.GetInstance(pdfDoc, pdfStream);
// Open the iTextSharp document
pdfDoc.Open();
// Create a new XpsDocument from the XPS file
XpsDocument xpsDoc = new XpsDocument(xpsStream, FileAccess.Read);
// Create a FixedDocumentSequence from the XpsDocument
FixedDocumentSequence fixedDocSeq = xpsDoc.GetFixedDocumentSequence();
// Loop through each FixedDocument in the FixedDocumentSequence
foreach (FixedDocument fixedDoc in fixedDocSeq.Documents)
{
// Loop through each PageContent in the FixedDocument
foreach (PageContent pageContent in fixedDoc.Pages)
{
// Convert the PageContent to a WPF Visual
FixedPage fixedPage = pageContent.GetPageRoot(false);
System.Windows.Controls.Canvas canvas = new System.Windows.Controls.Canvas();
canvas.Children.Add(fixedPage);
canvas.Measure(new System.Windows.Size(double.PositiveInfinity, double.PositiveInfinity));
canvas.Arrange(new System.Windows.Rect(new System.Windows.Point(), canvas.DesiredSize));
// Convert the WPF Visual to an iTextSharp image
RenderTargetBitmap bitmap = new RenderTargetBitmap((int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96, PixelFormats.Default);
bitmap.Render(canvas);
MemoryStream ms = new MemoryStream();
BitmapEncoder encoder = new PngBitmapEncoder();
encoder.Frames.Add(BitmapFrame.Create(bitmap));
encoder.Save(ms);
Image iTextImage = Image.GetInstance(ms.ToArray());
// Add the iTextSharp image to the PDF document
pdfDoc.Add(iTextImage);
}
}
// Close the iTextSharp document
pdfDoc.Close();
}
}
}
```
你需要将 `xpsFilePath` 和 `pdfFilePath` 参数分别替换为你要转换的XPS文件的路径和要生成的PDF文件的路径。