- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否可以对 TForm 上的 VCL 控件进行 Alpha Blend 或实现类似的效果?
例如,请考虑以下屏幕截图,其中除了其他控件之外,TForm 上还放置了两个 TPanel。这两个面板都可拖动(参见How to Move and Resize Controls at Run Time)。
现在,是否可以在拖动时使这些面板半透明,以便您可以看到下面的内容? (如通过图像处理生成的第二张图像所示)
最佳答案
VCL 让您有机会 specify a drag image list要在拖放过程中使用,这里有一个简单的示例:
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TPanel = class(Vcl.ExtCtrls.TPanel)
protected
function GetDragImages: TDragImageList; override;
end;
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
CheckBox1: TCheckBox;
Edit1: TEdit;
Label1: TLabel;
Panel1: TPanel;
Panel2: TPanel;
Panel3: TPanel;
procedure FormCreate(Sender: TObject);
procedure FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
procedure PanelStartDrag(Sender: TObject; var DragObject: TDragObject);
procedure PanelEndDrag(Sender, Target: TObject; X, Y: Integer);
private
FDragImages: TDragImageList;
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TPanel }
function TPanel.GetDragImages: TDragImageList;
begin
Result := (Owner as TForm1).FDragImages;
end;
type
TControlProc = reference to procedure(Control: TControl);
procedure IterateControls(Control: TControl; Proc: TControlProc);
var
I: Integer;
begin
if Assigned(Control) then
Proc(Control);
if Control is TWinControl then
for I := 0 to TWinControl(Control).ControlCount - 1 do
IterateControls(TWinControl(Control).Controls[I], Proc);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
FDragImages := nil;
// set display drag image style
IterateControls(Self,
procedure(Control: TControl)
begin
Control.ControlStyle := Control.ControlStyle + [csDisplayDragImage];
end
);
end;
procedure TForm1.FormDragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
Accept := Source is TPanel;
end;
procedure TForm1.PanelEndDrag(Sender, Target: TObject; X, Y: Integer);
begin
FreeAndNil(FDragImages);
end;
procedure TForm1.PanelStartDrag(Sender: TObject; var DragObject: TDragObject);
var
Image: TBitmap;
begin
if not (Sender is TPanel) then
Exit;
Image := TBitmap.Create;
try
Image.PixelFormat := pf32bit;
Image.Width := TControl(Sender).Width;
Image.Height := TControl(Sender).Height;
TPanel(Sender).PaintTo(Image.Canvas, 0, 0);
FDragImages := TDragImageList.Create(nil);
FDragImages.Width := Image.Width;
FDragImages.Height := Image.Height;
FDragImages.SetDragImage(FDragImages.Add(Image, nil), 0, 0);
FDragImages.ShowDragImage;
except
Image.Free;
FreeAndNil(FDragImages);
raise;
end;
end;
end.
关于delphi - 是否可以在 TForm 上对 VCL 控件进行 Alpha Blend?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12627526/
假设我有一个类人: public class Person { public string Name {get; set;} public int Age {get; set;} }
我听说过很多关于使用 Expression Blend 制作 HTML/Javascript Metro 应用程序的信息。 但是,我很好奇 Expression Blend 在制作网站(即在所有浏览器
我知道使用混合的 DropShadowEffect,但我需要阴影出现在控件的内部,使其具有内部凹陷的外观。 任何想法将不胜感激。 最佳答案 这是一种使用带有剪切路径的投影来修剪外边缘的技术,只留下阴影
每隔一段时间,我就会在 Blend for Visual Studio 中遇到编译器异常。一切都在编译和工作得很好,然后突然 BAM!我收到编译器错误,告诉我对象不存在于特定的命名空间中。在它们消失之
每当我尝试在 Expression Blend 4 上运行项目时,总会出现错误。 指定的解决方案配置“Debug|MCD”无效。请使用配置和平台属性指定有效的解决方案配置(例如 MSBuild.exe
我似乎很擅长让 Expression Blend 4 在启动时崩溃。该问题似乎与初始化静态托管和非托管变量的死锁有关,因为 Blend 首先打开我的解决方案,其中混合了非托管 C++ 和托管代码项目。
我在混合中显示设计时数据时遇到问题,这是我的代码 这是我的收藏 View 源: 以及使用它的网格 View : 您无法通过在设计器中单击来选择实际的“屏幕”。即使您没有添加其他元素。如果添加任何元素,您将获得预期的典型调整大小行为,但由于您无法选择屏幕,因此您无法调整其大小,甚至无法查看属性。 最佳答案 您可以
我注意到当使用 mix-blend-mode 时,结果与使用 background-blend-mode 时不同,即使你使用相同的混合模式。 例如,比较以下 2 个结果: 我已经在下面复制了我的设置和
我们的版本适用于 Silverlight 5 的 Microsoft Expression Blend 预览 已于 6 月 30 日到期,还有 否 提供在线许可证购买选项。 以下链接指出 Blend
由于SketchFlow中没有网格 Assets ,因此最好的表示方式是什么?每个人都只是使用矩形 Assets 吗? 最佳答案 在提出问题时,存在变通方法和弊端。但是现在-随着刚刚发行的(2010年
我浏览到我想要打开的解决方案中的单个项目,而表达式混合会打开整个解决方案。有什么办法可以避免这种情况? 最佳答案 Expression Blend 和 Visual Studio 共享相同的 .sln
我刚刚开始使用 Blend for Visual Studio 来习惯 WPF。我以前使用标准的 Windows 窗体创建程序,现在想使用更现代的东西。但是我在 5 分钟后就遇到了一个主要问题。我添加
我正在尝试在 Blend 3 中设计一些 UserControl 类。我希望它们的某些部分在运行时创建时“折叠”,但我希望能够编辑它们的组成部分而无需每次都修改代码 build 。 它适用于示例数据源
我正在为我的 Silverlight 2 应用程序构建自定义控件。它在一个 SL 类项目中,它包含两个文件: MyControl 类,继承自 Control,很少有 DepedencyProperti
我想删除绿屏背景,但对我所取得的成就并不完全满意,因为我仍然有绿色边框(尤其是在头发等半透明区域,当我移动头部时)。 色键过滤器的混合参数文档说 blend Blend percentage. 0.0
我开始使用 Blend for VS 2012RC,当我打开 Blend 然后转到 New Project ,我看不到选择项目类型的选项。它完全是空的,如下所示。谁能帮我解决这个问题。 我还尝试在 V
我正在尝试添加对另一个项目(例如 Elysium)中定义的资源库的引用,并在表达式混合中使用它。 这是我在 App.Xaml 文件中合并资源字典的方法。
我试图在加载屏幕时激活一个状态,但它不起作用。 我要做的是,我转到屏幕,右键单击 LayoutRoot,然后转到“激活状态”,然后选择我的状态。然后当我点击这个新生成的 [ActivateStateA
我使用 Blend 创建了 TextBox 模板的副本。我需要在 ValidationErrorElement 中编辑 Path.Data。我怎么做?我可以看到 XAML,但我无法弄清楚如何使用设计器
我是一名优秀的程序员,十分优秀!