问题列表 - 第5191页

如何在.NET中使用大位图?

我正在尝试编写一个轻量级图像查看应用程序.但是,.NET存在系统内存限制.

当尝试加载大位图(9000 x 9000 px或更大,24位)时,我得到一个System.OutOfMemoryException.这是在具有2GB RAM(其中1.3GB用完)的Windows 2000 PC上.尝试加载文件也需要很长时间.

以下代码生成此错误:

Image image = new Bitmap(filename);
using (Graphics gfx = this.CreateGraphics())
{
    gfx.DrawImage(image, new Point(0, 0));
}
Run Code Online (Sandbox Code Playgroud)

这段代码也是如此:

Stream stream = (Stream)File.OpenRead(filename);
Image image = Image.FromStream(stream, false, false);
using (Graphics gfx = this.CreateGraphics())
{
    gfx.DrawImage(image, new Rectangle(0, 0, 100, 100), 4000, 4000, 100, 100, GraphicsUnit.Pixel);
}
Run Code Online (Sandbox Code Playgroud)

此外,它就足以做到这一点:

Bitmap bitmap = new Bitmap(filename);
IntPtr handle = bitmap.GetHbitmap();
Run Code Online (Sandbox Code Playgroud)

后一个代码旨在与G​​DI一起使用.在研究这个问题时,我发现这实际上是一个内存问题,.NET试图在单个内存块中分配两倍的内存.

http://bytes.com/groups/net-c/279493-drawing-large-bitmaps

我从其他应用程序(Internet Explorer,MS Paint等)了解到,可以打开大图像,而且很快.我的问题是,如何在.NET中使用大型位图?

无论如何流式传输它们,还是非内存加载它们?

c# gdi bitmap out-of-memory

12
推荐指数
1
解决办法
1万
查看次数

多值字典

我如何在c#中创建一个多值字典?

例如Dictionary<T,T,T>,第一个T是键,其他两个是值.

所以这是可能的: Dictionary<int,object,double>

谢谢

c#

72
推荐指数
5
解决办法
11万
查看次数

是否有XSL"包含"指令?

我有以下XSL片段:

  <xsl:for-each select="item">
    <xsl:variable name="hhref" select="link" />
    <xsl:variable name="pdate" select="pubDate" />
    <xsl:if test="hhref not contains '1234'">
      <li>
        <a href="{$hhref}" title="{$pdate}">
          <xsl:value-of select="title"/>
        </a>
      </li>
    </xsl:if>
  </xsl:for-each>
Run Code Online (Sandbox Code Playgroud)

if语句不起作用,因为我无法计算contains的语法.我怎样才能正确表达xsl:if?

xslt

54
推荐指数
3
解决办法
13万
查看次数

视图控制器之间通信的最佳方式是什么?

作为Objective-c,cocoa和iPhone开发人员的新手,我强烈希望充分利用语言和框架.

我正在使用的资源之一是斯坦福大学的CS193P课程,他们已经留在网上了.它包括讲义,作业和示例代码,由于课程由Apple开发者提供,我绝对认为它是"从马的嘴里".

课程网站:http:
//www.stanford.edu/class/cs193p/cgi-bin/index.php

第08讲与构建基于UINavigationController的应用程序的任务相关,该应用程序将多个UIViewControllers推送到UINavigationController堆栈.这就是UINavigationController的工作原理.这是合乎逻辑的.但是,幻灯片中有一些关于UIViewControllers之间通信的严厉警告.

我将引用这个严肃的幻灯片:http:
//cs193p.stanford.edu/downloads/08-NavigationTabBarControllers.pdf

第16/51页:

如何不共享数据

  • 全局变量或单例
    • 这包括您的申请代表
  • 直接依赖使您的代码不再可重用
    • 而且更难以调试和测试

好.我很失望.不要盲目地将所有用于在viewcontroller之间进行通信的方法扔到app委托中,并引用app delegate方法中的viewcontroller实例.公平的'努力.

再进一步说,我们得到这张幻灯片告诉我们应该做些什么.

第18/51页:

数据流的最佳实践

  • 弄清楚究竟需要传达什么
  • 定义视图控制器的输入参数
  • 要进行备份层次结构的通信,请使用松散耦合
    • 为观察者定义通用接口(如委托)

然后,这张幻灯片后面会出现一个占位符幻灯片,然后讲师显然会使用UIImagePickerController的示例演示最佳实践.我希望这些视频可用!:(

好吧,所以...我担心我的objc-fu不是那么强大.我也对上面引用的最后一行感到困惑.我一直在谷歌搜索关于这一点,我发现似乎是一篇体面的文章谈论观察/通知技术的各种方法:http:
//cocoawithlove.com/2008/06/five-approaches-to -listening-observing.html

方法#5甚至表示委托作为一种方法!除了....对象一次只能设置一个委托.所以当我有多个viewcontroller通信时,我该怎么办?

好的,那是设置团伙.我知道我可以通过引用在我的appdelegate中的多个viewcontroller实例轻松地在app委托中执行我的通信方法,但我想以正确的方式做这种事情.

请回答以下问题,帮助我"做正确的事":

  1. 当我试图在UINavigationController堆栈上推送一个新的viewcontroller时,应该这样做. 我的代码中哪个类/文件是正确的位置?
  2. 当我想在一个UIViewControllers中影响某个数据片段(iVar的值)时,当我在另一个 UIViewController中时,这样做的"正确"方法是什么?
  3. 假设我们在一个对象中一次只能设置一个委托,当讲师说"为观察者定义一个通用接口(如委托)"时,实现会是什么样子.如果可能的话,伪代码示例在这里会非常有用.

iphone cocoa-touch delegates objective-c key-value-observing

164
推荐指数
2
解决办法
4万
查看次数

强制用户在编辑前锁定SVN中的文件

我们的项目中有一些文件无法合并,因此在编辑之前必须由用户锁定文件.有没有办法强制用户在编辑之前锁定文件?

我们正在使用Subversion和TortoiseSVN/VisualSVN.

svn version-control tortoisesvn visualsvn

26
推荐指数
2
解决办法
3万
查看次数

我可以更改Environment.NewLine的值吗?

我正在使用一个库,它在编写文件时使用Environment.NewLine作为换行符.我需要它来编写Unix格式的文件,因此想要更改换行符.

我可以更改Environment.NewLine的值吗?

任何其他想法(除了转换创建文件后)?

.net c# newline

6
推荐指数
1
解决办法
3672
查看次数

如何计算GPX文件的距离?

我有一个带GPS轨道的GPX文件.现在我想计算这条赛道所覆盖的距离.

计算这个的最佳方法是什么?

xml algorithm gps gpx

22
推荐指数
1
解决办法
2万
查看次数

GetMem x ReallocMem

System.GetMem和System.ReallocMem有什么区别?

ReallocMem的Delphi 2009帮助,与GetMem的描述完全相同.System.FreeMem和System.Dispose如何

我应该对数组使用什么?

type
  PMemberDataList = ^TMemberDataList;
  TMemberDataList = array[0..MaxClassMembers -1] of PMemberData;

var
  FItems: PMemberDataList;

begin
  GetMem(FItems, Value * SizeOf(Pointer));
  FreeMem(FItems);
end;
Run Code Online (Sandbox Code Playgroud)

要么

begin
  ReallocMem(FItems, Value * SizeOf(Pointer));
  Dispose(FItems);
end;
Run Code Online (Sandbox Code Playgroud)

在人们建议之后,我将FItems声明为记录类型,而不是指向记录的指针,将TMemberDataList声明为动态数组,将SetLength声明为(de)alloc数组,将New/Dispose声明为数据

type
  PMemberDataList = ^TMemberDataList;
  TMemberDataList = array of PMemberData;
var
  Items: TMemberDataList;
  Item: PMemberData;

// Add
begin
  Setlength(Items, 1);
  New(Item);
  Items[0]:= Item
end;

// Remove
begin
  Dispose(Items[0]);
  Setlength(Items, 0);
end;
Run Code Online (Sandbox Code Playgroud)

arrays delphi memory-management

5
推荐指数
1
解决办法
4357
查看次数

.lib文件未创建(VS2008)

我在我的解决方案中添加了一个dll项目,并通过可执行项目显式引用它.可执行文件抱怨它无法找到lib.

有任何想法如何设置项目来创建所需的lib文件?并且为什么项目不会创建一个?!?

干杯

注意 我已搜索项目,并且文件未在任何地方创建.

visual-studio-2008

10
推荐指数
1
解决办法
1万
查看次数

如何在Javascript中没有POSTDATA警告的情况下重新加载页面?

我想使用以下命令重新加载页面:

window.location.reload(true); 
Run Code Online (Sandbox Code Playgroud)

但是我收到POSTDATA警告,因为刷新函数想要重新发送以前的POST表单数据.如何在没有此警告的情况下刷新页面?

更新:我无法控制项目!我无法解决POST本身!

javascript refresh postdata reload

64
推荐指数
6
解决办法
13万
查看次数