正如这里所讨论的,当在Vista中调整Swing应用程序的大小(和Windows 7,这就是我正在使用的)时,右下角会出现黑色背景,而Swing的重绘会赶上更改.
使用其他应用程序(Windows资源管理器(本机),Firefox(C++?)和Eclipse(Java))我注意到它们都有同样的问题 - 与上面链接中的人说的相反 - 但它们通过以下方式将问题最小化具有灰色填充颜色,与Swing中出现的黑色相比,其视觉震撼性要小得多.
我想知道是否有一些方法可以改变这一点,以便Swing的行为与其他应用程序一样?我尝试设置JFrame的背景颜色,但无济于事.
其他信息 乔纳斯发现(见下面的信息性答案)这是JFrames的一个问题,但不是AWT框架 - 也许这会帮助有人解决这个问题.
我正在尝试编写一个应用程序,可以使用模拟画笔笔划创建看起来像绘画的图片.模拟笔触的简单方法有什么好的来源吗?例如,给定用户拖动鼠标的鼠标位置列表,画笔宽度和画笔纹理,如何确定要绘制到画布的内容?
我尝试在鼠标移动的方向上调整画笔纹理,并沿着路径轻拍几个画笔纹理图像,但它看起来不太好.我想我错过了刷子纹理应该缩小并在角落上生长的东西.
任何简单的链接将不胜感激.我发现了关于模拟例如油画的复杂学术论文,但我只想要一个基本的算法,如果可能的话会产生好的结果.
我以前的相关问题是逆向工程旧油漆程序
我在这里建立了我的运营基地:http://animatorpro.org wiki即将推出.
好的,现在我有300,000行传统的MSDOS代码库.这有点"小心你想要的"情况.我不是一位经验丰富的C程序员.我也不是完全缺乏经验,但出于所有意图和目的,我对语言是一个菜鸟,特别是它的图书馆的复杂性.我特别不了解专门为MSDOS编写的C程序与跨平台程序之间差异的变幻莫测.但是我已经研究了这个代码库超过一年了,这就是我对Animator Pro的了解:
使用的编译器和工具:
大部分编译似乎都是由批处理文件驱动的.虽然我已经获得了所有这些工具的副本,但我还没有成功编译它.(虽然我编译了它的哥哥,autodesk animator original.
它有一个插件系统,可以在DLL可用之前复制DLL,基于REX.插件系统处理:
它有自己的脚本解释器,名为POCO,基于C语言 - 脚本语言有足够的能力来完成插件系统可以做的几乎所有事情 - 只是更慢.
鉴于此信息,这是我的发展计划.请批评这个.源代码可在上面的链接中找到,因此如果您愿意,可以轻松地自己评估情况.
任何人都有问题吗?allegro是个不错的选择吗?如果没有,为什么?你会对这个插件系统做些什么?你会做什么不同的?这整件事是愚蠢的吗?我应该从头开始重写它,使用原始的灵感吗?(显然需要原始开发人员"大约一个月"才能做到这一点)
我上面没有提到的一件事是文本/字体系统.不知道该怎么办,但Animator Pro有自己的自定义字体格式,但也可以使用Postscript Type 1字体和其他一些格式.
我在Drawable这里试验,发现了一些我无法解释的东西,希望有人可以帮助我.
为什么加入CornerPathEffect到Paint似乎"破"(?)的EVEN_ODD FillType?
更具体地说,我正在按原样测试这个HexagonDrawable类.这就是我得到的:

但是,如果我设置CornerPathEffect为Paint,如下所示(构造函数)...
public HexagonDrawable(int color) {
paint.setColor(color);
paint.setPathEffect(new CornerPathEffect(6)); // added
hexagon.setFillType(Path.FillType.EVEN_ODD);
}
Run Code Online (Sandbox Code Playgroud)
......这就是我得到的:

圆角,是的,但没有轮廓的外观(奇数/偶数/奇数).有人可以解释一下原因吗?
我有几个非常老的基于MSDos的绘画程序.它们适用于调色板索引图像缓冲区.它们具有许多壮观的形状绘制工具,画笔和效果,在任何现代绘画程序中都不存在 - 特别是在保持在低调色板索引图像的"边界"内时.我想在现代程序中重现许多这些奇妙的工具,或许让我们再次更容易访问自己和普通大众,而无需启动像dosbox这样的模拟器.但我有一个问题.
虽然很多这些画笔和工具都有明显的功能,但其实现应该相当简单.但是使用其他工具,他们的操作原则并不那么明显.我将无法确定一个正确或忠实的算法来实现这些.
如果你是我,你会采取什么方法?是否有现成的反编译器/反汇编器可以处理这样的旧程序?或者你会采取一些不同的方法,例如有条不紊地测试不同输入的算法,以推断潜在的功能?不同技术的某种组合?对于这些程序的一行,这些(商业)程序的原作者是已知的,现在是狂热的开源倡导者.我应该尝试直接与他们联系并询问吗?我对逆向工程并不是特别有经验,所以我不知道从哪里开始.
编辑:似乎"问,你们应该接受"真的有效.
编辑2:查看http://animatorpro.org获取我获取源代码的程序的源代码.豪华油漆也不错,但丹席尔瓦似乎已经从地球上消失了.
简要背景:我正在研究基于Web的绘图应用程序,我正在实现的工具之一是1像素厚的铅笔.该工具允许用户在画布上绘制1px别名行.
为了确定用户在画布上绘制的位置,将监视鼠标坐标.如果按住mouse1,光标所在的像素将会改变.基本上它就像Photoshop中的铅笔工具一样.
注意:Bresenham的算法不适用于这种情况.我的输入是实时提交的,所以我没有画一条从P0到P1的线,其中P0和P1之间的距离是很多像素.通常,P1是P0的邻居.
我遇到的问题是我生成的线条没有完全干净的1px重量.这是一个例子:

请注意,两条线都是手绘的,因此存在一些差异.有趣的是,Photoshop能够为我绘制的线条制作更清晰的1px表示.我的线看起来更脏的原因是因为:


在我的应用程序中使用该工具进行绘制时,红色像素被填充.在Photoshop中,红色像素未被填充.这是有道理的,因为为了从给定像素移动到例如其东南邻居,要么东或南邻居很可能会被遗弃.光标准确地越过角落进入东南邻居的可能性极小,避免了红色像素的绘制,但这通常不会发生.
所以,我留下的问题是Photoshop如何能够跳过我的线条中出现的红色像素.我唯一能想到的就是等到两个像素排队之后才能绘制其中任何一个,这样我就知道是否有一个"角落邻居"被传递过来.在这种情况下,我不会绘制两个像素中的第一个,因为它相当于我的图中的红色像素.如果用户绘制像素,将光标向南移动一个像素,然后向东移动一个像素,则存在不绘制预期像素的风险.应绘制两个像素,但算法会另外说明.
有任何想法吗?Photoshop如何处理这个问题?
我希望能够在我的应用程序窗口上绘制,以便我可以使用一些额外的诊断信息来注释所有小部件,类似于Firefox中的CSS开发人员工具(例如,添加小部件类,样式,突出显示边框等).
我可以遍历小部件树并提取相关信息,但问题是如何使用此信息覆盖所有应用程序窗口?
一种方法是覆盖我QMainWindow的绘画事件,但必须为所有顶级窗口完成.是否有替代方法可以在QDesktopWidget例如上绘画?或者每种QWidget油漆方法的任何钩子?任何涉及子类化的东西QWidget都不适用于标准小部件.
这是我之前提出的问题:
为Mandrill欢呼
编辑:感谢德米特里,我现在有一个非常简单的方法,可以轻松扩展:
class DiagnosticStyle : public QWindowsVistaStyle
{
Q_OBJECT
public:
typedef QWindowsVistaStyle BaseStyle;
void drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const;
};
void DiagnosticStyle::drawControl(ControlElement element, const QStyleOption* option, QPainter* painter, const QWidget* widget) const
{
BaseStyle::drawControl(element, option, painter, widget);
if (widget && painter) {
// draw a border around the widget
painter->setPen(QColor("red"));
painter->drawRect(widget->rect());
// show the classname of the widget
QBrush translucentBrush(QColor(255,246,240, 100)); …Run Code Online (Sandbox Code Playgroud) 我有一个将在触摸屏系统上使用的应用程序,它包含许多相当大的按钮(~100px square).
每个按钮将有1到4行文本(通常每行一个单词).
由于按钮中有大量的填充,我不得不减小文本的大小,使其变得几乎不可读,但是如果我能够减少内部填充,那么文本将直接绘制到边框那我就不会有问题了.
我试图将控件的填充减少到零,如下所示,但它没有帮助.
this.Text = _label;
this.Font = new Font(this.Font.FontFamily, (float) _size);
this.Padding = new Padding(0);
Run Code Online (Sandbox Code Playgroud)
问题的一个示例如下所示:

正如您所看到的,"OVERVIEW"这个词有足够的空间放在一行上,但是如何在不缩小字体大小的情况下实现这一目标呢?我不喜欢不得不重写控件的文本绘画代码.
编辑:我注意到将填充增加到高达300的各种值,对控件的内部填充没有任何影响.另外,对于信息,我正在使用的按钮是我从Windows.Forms.Button类继承的控件,因为我需要添加一些属性,但是我没有干涉任何Button自己的方法.
编辑
缓慢的编译时间现在可以通过子项目启用的构建大大减轻,这是一个巨大的胜利.
已经从Play的内置资产生成器(即Coffeescript和LESS)转移到第三方Grunt JS ; 现在增量构建期间的代码更改仅受scalac编译时间的限制,而不受Play的相对较慢资产生成的开销限制.
ORIGINAL
总体上非常满意Play 2.1 Scala(2012年9月14日发布,就在切换到Scala 2.10之前); 但是,有一些发展的痛点:
1)路由:在路由改变时,一个人的整个路由 - 控制器结构
can被重新编译:不好.2)由于路由
POST /foo/bar/:id冲突,REST似乎不被直接支持DELETE /foo/bar/:id; 即路径路径必须是唯一的,可能是反向路由.3)视图:每个foo动作使用scala.html文件,文件计数增长很快,这意味着构建时间越慢,编译越多; 由于缺乏IDE支持而不支持泛型和盲编码(当然,迄今为止没有scala模板引擎具有IDE支持,AFAIK)是特别棘手的领域.
4)增量构建工作,但过程中的任何内容都不能称为"snappy",即使对scala.html文件进行简单更改,实际上也需要@ 2秒,这是很长一段时间,当你想要即时代码时 - 更改浏览器刷新反馈周期.
我知道Play开发人员正在研究上述一些问题,而慢速构建时间也与sbt,scala版本和自己的代码结构直接相关.总的来说,Play一直是一种愉快的开发体验.然而,这是关于痛苦的,我想知道Lift在这方面带来了什么......
Lift似乎采取了不同的方法.升降机是否会受到以上物品的影响?假设没有,因为MVC,Lift不是,并且xml样式的片段方法可能不会产生与幕后构建机器的一些Play相同的编译时间.
Lift有哪些难点?